web-dev-qa-db-ja.com

GDBで「終了までシングルステップ...行番号情報がない」というメッセージが表示されるのはなぜですか?

フラグ-gを使用してgcc 4.4.1を使用してCプログラムをコンパイルしましたが、gdbバージョン7.で関数の1つをステップスルーしようとすると、私はメッセージを受け取ります:

"Single stepping until exit from function _DictionaryTree_getNodeList, 
which has no line number information."

誰かがこれがなぜ起こっているのか教えてもらえますか?

40
Steven Oxley

推測だけですが、_DictionaryTree_getNodeListは、-gでコンパイルされていない別のファイルにありますか?

32

私も同じ問題を抱えていましたが、私の場合、コンパイラに-gを追加するだけでは十分ではなかったため、Manavが提案する-ggdbを使用しました。

9
Arild

私の場合、問題はgccgdbの間のバージョンスキューでした

検索からここに着いた後、これらの答えが私の状況に合わない場合、(エイリアス/シンボリックリンク/ Makefile /環境変数のために)誤って新しいGCC(4.8.x)と古いものを使用していたことがわかりましたGDB(7.2)。 GDBの新しいバージョン(7.8)にステップアップすると問題が修正されました。何らかの理由で、新しいGCCと古いGDBを使用しても機能しませんでした。

6
hoc_age

このエラーメッセージも表示されましたが、問題の原因は異なりました。まだ問題がある場合は、#include <stdio.h>をファイル内で、適切な角かっこで囲んでstdio.h(テキストメッセージは、stdio.h)。

1
user3916997

すでに-g2でコンパイルしていたにも関わらず、私は同じ問題を抱えていました。これを-g3に変更すると、うまくいきました。

0
richar8086

-gオプションを使用して-gオプションを使用せずにファイルをコンパイルすると、同じ問題が発生しました。ファイルの1つについては、gdbは問題なく行番号を示しました(-gオプションなしでコンパイルされた場合でも)。そして、他のファイルについては、-gフラグを明示的に指定する必要がありました...

相互参照を使用してGDBで実行時にソースファイルをロードできるかどうかについてのアイデアは、適切なソリューションです...行をアドレスにマッピングすることにより:D。

0
ravi.zombie

LD_LIBRARY_PATHを指定せずに共有ライブラリをデバッグしていたため、デバッグのエンドステートで正しい場所にこの問題が発生しました。

使用できます

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH

うまくいけば、これは誰かに役立つ

0
Hans