質問

私は、デバッガがどのように動作するかを象徴的に理解したいと思います?。どのようなデバッグ・シンボル・テーブルであり、それは、ソースレベルのデバッグを容易にする方法。私は、ファイルと、このような複雑さをオブジェクトに書き込まれます何のgccに「-g」オプションを提供する場合、実際に起こるdebuggers..whatのシーンの行動の背後にあるのはかなり忘れています。 SOコミュニティが説明し、私はより多くの情報を得ることができますソースに私を導くことができる場合、私は喜んでいるだろう。

役に立ちましたか?

解決

シンボルファイルは、ちょうどすべての定義されたグローバル変数と関数のリストだけでなく、モジュールの先頭からのオフセットです。また、すべての構造体のリストを持っており、彼らのフィールドについて説明します。

こうすることで、アップGDB / WinDbgの負荷、EIP(現在の命令)を見て、(SomeFunc + 0x25)のようなものにアドレスをマッピングすることができます。それはさらに一歩進み、「SomeFunc + 0x25は、57行をfoo.cppに近いです」、と言うことができるようにもちろん、ほとんどのシンボルも、同様にエンコードされたライン情報を持っています。

他のヒント

gccと方法によって生成されたすべてのデバッグ情報の詳細な説明についてはDWARFデバッグの仕様をチェックアウトデバッガは、それを利用します。

DWARF 3デバッグ仕様

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top