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# 22602

11.1 EDK - GDB を使用したデバッグが安定しない

説明

キーワード : gnu, debugger, optimization, -g, -O0, デバッガ, デバッグ, 最適化

プログラムをデバッグする際、GDB が安定しません。デバッガが断続的に停止してしまいます。デバッガを停止すると、sigtrap エラーが表示され、デバッガを再起動しなくてはなりません。GDB を使用したデバッグを安定させるにはどうしたらよいですか。

ソリューション

まず、ユーザー アプリケーションと EDK ライブラリの両方にデバッグ用の -g シンボルを追加していることを確認してください。[Set Compiler Options] ダイアログボックスの [Debug and Optimization] タブで、[Create Symbols for Debugging (-g option)] を選択します。-g フラグが [Software Platform Settings] ダイアログ ボックスの [extra_compiler_flags] にも含まれていることを確認してください。

次に、デバッグは最適化をせずに実行してください。最適化を使用したデバッグも GDB で機能するはずですが、コンパイラで最適化されたコードをデバッグするのは困難です。コンパイラでコードが最適化されるとコードのフローが並び替わり、コードの順序が前後するため、追跡が難しくなります。コンパイラで最適化されたコードのデバッグが必要なのは、コンパイラによる最適化の問題を調べる場合のみです。プログラムを最適化なしでデバッグすると、フローが追跡しやすくなります。また、最適化されていないコードをデバッグする方が、GDB も安定します。

ユーザー アプリケーションおよび EDK ライブラリの両方とも最適化なしでコンパイルしてください。[Set Compiler Options] ダイアログ ボックスで最適化をオフにしても、ユーザー アプリケーションにしか適用されないので注意してください。EDK ライブラリの最適化をオフにするには、ソフトウェア プラットフォームに手動でオプションを設定する必要があります。次の手順に従ってください。
1. [Software Platform Settings] ダイアログ ボックスを開きます。

2. [Software Platform] ページの [extra_compiler_flags] ボックスに、「-O0」オプションを追加します。
3. ユーザー アプリケーションを最適化なしでコンパイルするには、[Set Compiler Options] ダイアログ ボックスの [Debug and Optimization] タブで [No Optimization] を選択します。

第 3 に、GDB のデバッグ ボタンがどのような機能を果たすのかを理解し、正しく使用することが重要です。

[step] (step into) ボタンをクリックすると、次の命令に進みます。関数呼び出しで [step] ボタンをクリックすると、関数が呼び出されます。

[next] (step over) ボタンをクリックすると、現在のコード行では停止せずに次の行まで進むことができます。これが関数呼び出しの場合は、その関数呼び出しでは停止せずに、その次の行まで進みます。

[finish] (step return) ボタンをクリックすると、関数内から戻ることができます。[step] ボタンは関数内に入り、[finish] ボタンは関数から抜け出します。

[continue] (resume) ボタンをクリックすると、次のブレークポイントまでプログラムが実行されます。


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