メインコンテンツへスキップ
入力出力別名

説明

DWARF フォーマットは、ELF ファイル (実行可能ファイル、ライブラリ、またはオブジェクトファイル) から DWARF デバッグシンボルを解析します。 dwarfdump に似ていますが、はるかに高速で (数百 MB/s) 、SQL もサポートしています。 .debug_info セクション内の各 Debug Information Entry (DIE) ごとに 1 行を生成し、 DWARF エンコーディングでツリー内の子要素リストの終端に使われる “null” エントリも含まれます。
.debug_infounit で構成されており、これはコンパイル単位に対応します。
  • 各 unit は DIE のツリーで、compile_unit DIE がそのルートです。
  • 各 DIE は tagattribute のリストを持ちます。
  • 各 attribute は namevalue (および、値がどのようにエンコードされるかを指定する form) を持ちます。
DIE はソースコード内のさまざまな要素を表し、その tag によって何を表しているかがわかります。たとえば、次のようなものがあります。
  • 関数 (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:
    • name
    • linkage_name - マングルされた完全修飾名。通常これを持つのは関数だけです (ただし、すべての関数ではありません)
    • decl_file - この entity が宣言されているソースコードファイルの名前
    • decl_line - この entity が宣言されているソースコード内の行番号
  • attributes を表す並列配列:
    • attr_name - attribute の名前。慣例的な “DW_AT_” プレフィックスは省略されます
    • attr_form - attribute がどのようにエンコードされ、解釈されるか。慣例的な DW_FORM_ プレフィックスは省略されます
    • attr_int - attribute の整数値。attribute が数値を持たない場合は 0
    • attr_str - attribute の文字列値。attribute が文字列値を持たない場合は空

使用例

DWARFフォーマットを使用すると、最も多くの関数定義 (Template のインスタンス化や、インクルードされたヘッダーファイル内の関数を含む) を持つコンパイル単位を見つけることができます。
Query
Response

フォーマット設定

最終更新日 2026年7月1日