| 入力 | 出力 | 別名 |
|---|---|---|
| ✔ | ✗ |
説明
DWARF フォーマットは、ELF ファイル (実行可能ファイル、ライブラリ、またはオブジェクトファイル) から DWARF デバッグシンボルを解析します。
dwarfdump に似ていますが、はるかに高速で (数百 MB/s) 、SQL もサポートしています。
.debug_info セクション内の各 Debug Information Entry (DIE) ごとに 1 行を生成し、
DWARF エンコーディングでツリー内の子要素リストの終端に使われる “null” エントリも含まれます。
.debug_info は unit で構成されており、これはコンパイル単位に対応します。- 各 unit は DIE のツリーで、
compile_unitDIE がそのルートです。 - 各 DIE は tag と attribute のリストを持ちます。
- 各 attribute は name と value (および、値がどのようにエンコードされるかを指定する form) を持ちます。
- 関数 (tag =
subprogram) - クラス / structs / enums (
class_type/structure_type/enumeration_type) - 変数 (
variable) - 関数引数 (
formal_parameter) 。
class_type DIE には、そのクラスのメソッドを表す subprogram DIE を含めることができます。DWARF フォーマットは、次のカラムを出力します。
offset-.debug_infoセクション内での DIE の位置size- エンコードされた DIE のバイト数 (attribute を含む)tag- DIE の型。慣例的な “DW_TAG_” プレフィックスは省略されますunit_name- この DIE を含むコンパイル単位の名前unit_offset- この DIE を含むコンパイル単位の.debug_infoセクション内での位置ancestor_tags- ツリー内で現在の DIE の祖先の tag の配列。最も内側から最も外側の順ancestor_offsets-ancestor_tagsに対応する祖先の offset- 利便性のため、attributes 配列から複製された一般的な attribute:
namelinkage_name- マングルされた完全修飾名。通常これを持つのは関数だけです (ただし、すべての関数ではありません)decl_file- この entity が宣言されているソースコードファイルの名前decl_line- この entity が宣言されているソースコード内の行番号
- attributes を表す並列配列:
attr_name- attribute の名前。慣例的な “DW_AT_” プレフィックスは省略されますattr_form- attribute がどのようにエンコードされ、解釈されるか。慣例的な DW_FORM_ プレフィックスは省略されますattr_int- attribute の整数値。attribute が数値を持たない場合は 0attr_str- attribute の文字列値。attribute が文字列値を持たない場合は空
使用例
DWARFフォーマットを使用すると、最も多くの関数定義 (Template のインスタンス化や、インクルードされたヘッダーファイル内の関数を含む) を持つコンパイル単位を見つけることができます。
Query
Response