UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 22603

11.1 EDK - GDB での Xilkernel デザインのデバッグについて

説明

キーワード : GDB, Xilkernel, debug, gnu, XMK, debugger, デバッグ, デバッガ

GDB で Xilkernel ベースのデザインをデバッグできますか。その際、注意事項はありますか。

ソリューション

1. GDB ではカーネルは認識されません。Xilkernel は、スタンドアロン プログラムと同様に処理されます。そのため、停止したスレッド、使用されたカーネル リソース、スケジューラ情報など、通常のカーネル デバッガで提供される情報は示されません。

2. Xilkernel 上のユーザー アプリケーションを GDB でデバッグすることは可能です。その場合、すべてのスレッドが同時に表示され、ブレークポイントに到達するとすべてのスレッドとカーネルが停止します。

3. 下位の割り込み処理およびカーネル コードも確認でき、ブレークポイント後アプリケーションのステップを続けると、デバッガがカーネル コードに入る場合もあります。カーネル コード内にブレークポイントを設定して停止し、カーネルのリソースおよび操作を調べることも可能です。つまり、実際にはアプリケーションそのものではなく、カーネルをデバッグしていることになります。

4. 上記の 1 ~ 3 は、MicroBlaze でのみ機能します。GDB/XMD では PowerPC 上の割り込みドリブン プログラムのデバッグはサポートされていないので、PowerPC では機能しません。

5. Xilkernel_main() を呼び出した場合、この関数から抜け出すことができず、割り込み/コンテキストの切り替えがここで開始します。そのため、ステップしてこの関数内に入ったり通過したりするのはよい案とは言えません。アプリケーション スレッドにブレークポイントを設定することをお勧めします。このようにすると、続行したときに GDB がアプリケーション スレッド内で停止するので、step/next/finish を通常どおり実行できます。

6. ユーザー アプリケーションと EDK ライブラリの両方を -g コンパイラ オプションを使用してコンパイルしてください。Xilkernel_main() は EDK ライブラリに含まれており、ソフトウェア プラットフォーム設定で -O0 オプションを追加しない場合、コードはライブラリ内に入りません。詳細は、(Xilinx Answer 22602) を参照してください。

7. ユーザーの入力が必要なプログラムをデバッグする場合は、特に注意が必要です。たとえば、プログラムでコマンド ラインがインプリメントされるとします。uart の入力を受信する呼び出しがあると、コマンド プロンプトにユーザーが入力するまでプログラムがブロックされてしまいます。この場合、GDB が停止しているように見えますが、実際には uart の入力を受信する呼び出しによりプログラムがブロックされ、ユーザーの入力を待っているだけです。コマンドを入力すれば、GDB は続行されます。

8. 複雑な操作は完了するのに時間がかかる場合があり、GDB が停止しているように見える場合があります。これを回避するには、ブレークポイントを適切に設定し、GDB でのコードのパフォーマンスはボード上とは異なるということを理解してください。

AR# 22603
日付 04/25/2009
ステータス アクティブ
種類 一般
このページをブックマークに追加