GDB は next/stop の後に行ソースを表示せず、次のように行番号とソース ファイルのみを表示します。
(gdb) n
7 in test/test.c
一方、次のように現在の行を表示することを期待しています:
(gdb) next
17 char * good_message = "Hello, world.";
これを行うのに役立つ.gdbinitの設定はありますか?
GDB は next/stop の後に行ソースを表示せず、次のように行番号とソース ファイルのみを表示します。
(gdb) n
7 in test/test.c
一方、次のように現在の行を表示することを期待しています:
(gdb) next
17 char * good_message = "Hello, world.";
これを行うのに役立つ.gdbinitの設定はありますか?
一方、このように現在の行を表示することを期待しています
などの多くのプラットフォームでELF
は、コンパイラはソースへのパス (このtest/test.c
場合) とコンパイル ディレクトリの両方を記録するため、どのディレクトリで呼び出すかに関係なく、GDB はソースを表示できます。
しかし、多くのプラットフォームでは柔軟性が低く、コンパイル ディレクトリを記録する場所がありません。そのようなプラットフォーム (AIX など) では、コンパイル ディレクトリで GDB を開始するか、directory
コマンドでソースを探す場所を指定する必要があります。
おそらく私の答えは完璧な解決策ではないかもしれませんが、ソース プログラムをコンパイルする方法は重要です。たとえば、私の場合、実行してg++ fib.cpp -o fib
から実行しようとするgdb fib
と、ソースコードがlist
. デバッグフラグg++ -g fib.cpp -o fib
を使用してから gdb で実行すると、問題が解決しました。