おしながき

ELFファイルフォーマット

  • .eh_frameセクションの構造と読み方

DWARFファイルフォーマット

NCURSESライブラリ

  • NCURSES Programing HOWTO ワタクシ的ほんやく
    1. Tools and Widget Libraries
    2. Just For Fun !!!
    3. References
  • その他、自分メモ
  • NCURSES雑多な自分メモ01


最近の更新 (Recent Changes)

2019-09-24
2013-10-10
2013-10-03
2013-10-01
2013-09-29
目次に戻る:DWARFファイルフォーマット

DWARFってなに?

DWARFとは、実行ファイルや共有ライブラリの中に書き込まれている、デバッグ用の情報らしい。 デバッグ用の情報とは、下に示すものが書き込まれている。

  • ソースファイルの格納ディレクトリとソースファイル名
  • ソースファイル(C言語とか)の行と、コンパイル後のアセンブラの行の関係 (Cソースの何行目は、アセンブラの何行(バイト)目か、の一覧)
  • 関数やクラスの一覧
  • 変数の型の情報(例えば,intは何バイト、とか)
  • 構造体の構成(xxな名前のyyな型が入ってる、など)
  • etc

よって、デバッガはデバッグする際、

  • これらDWARFの情報を読み込む
  • .textセクションのバイナリコードを逆アセンブルする
  • DWARFの情報と、逆アセンブルコードの関係を解析する
  • 画面に表示

することで、C言語行単位のステップ実行ができちゃうらしい。

ちなみに、DWARF="Debug With Attibute Record Format"の略らしい。 これって、明らかに実行ファイルがELFだからDWARFだよねきっと。。。 (なので、Dr.Deamon64のELF/DWARF解析libはGoblinなんです。。。相変わらずてきとー)

どうやって作るの?

ソースをgccでコンパイルする際、
gcc -g 実行ファイル名 ソースファイル名 へんてこおぷしょん
と-gなオプションを付けます。もちろんダタです。

もちっと知りたいなぁ。。。

やっぱりWikipedia ですね。これです。→http://ja.wikipedia.org/wiki/DWARF このwikipediaのリンクに、規格書があります。さぁ、ダウンロードしよう!
って、全部英語じゃーーーーーーーーーーーー!読めん。 ということで、DWARFを自分のPGで利用したい「ふつーの人」はlibdwarfなるライブラリを使っちゃうみたいです。
ただ、Dr.Deamon64は「全部自分で作るんじゃい!」がテーマなんで。。。 DWARFも英語規格書もがんばらにゃならんのです。。。とほほ。。。 ということで、以下、規格書と格闘した内容をメモです。
※しかもDWARFって、日本語の情報はほとんどないっす。この点INTEL64/x64のエンコードよりもキツイ。
目次に戻る:DWARFファイルフォーマット