7

誰かがDWARFファイルを読み取って、ファイル名、行番号、関数名の詳細を教えてくれるプログラムを書くのを手伝ってくれませんか。

4

2 に答える 2

4

DWARF-2 & DWARF-3 の仕様は次のとおりです。

http://dwarfstd.org/dwarf-2.0.0.pdf

http://dwarfstd.org/Dwarf3.pdf

DWARF ファイルを読み取るための適切なライブラリがここにあります。

http://reality.sgiweb.org/davea/dwarf.html

そのライブラリを取得して使用して DWARF ファイルを読み取る (DWARF-2 および DWARF-3 を読み取る) か、ソース コードを調べて、独自のライブラリ/関数のセットを作成する方法を理解することができます。仕事。

于 2009-05-03T03:54:44.307 に答える
1

binutilsのavr-readelfを見ることができます。binutils / dwarf.cのdisplay_debug_lines()関数は、DWARFの行番号情報をデコードする役割を果たします。

また、上記で提案したように、libdwarfを使用できます。これにより、DWARFの低レベルの複雑さを隠すことができ、データの取得に集中できます。

elfdescriptorを使用してlibdwarfを設定し、Dwarf_Debug構造体を取得した後、次の操作を実行できます。

  1. dwarf_srclines()を使用してすべてのコンパイルユニットをトラバースします
  2. 各cuでdwarf_srclines()を使用します
  3. dwarf_srclines()から返された配列の各エントリでdwarf_lineaddr()を使用します
  4. 適切な場所でdwarf_dealloc()を使用することを忘れないでください。
于 2009-05-15T22:16:21.893 に答える