Light C | ← → 目次 索引 |
デバッグ情報ファイルすべてのレコードを説明します。
デバッグ情報ファイルのバージョン番号で、2000/01 現在、num は「1」です。このレコードは、デバッグ情報ファイルの先頭に 1 つだけ出力されます。
例 VER V:1
ソース ファイルを示します。num はソース ファイルの全行数、fname はファイル名またはパス名です。これ以降の N、PROC、GS、LS などの各レコードで示される項目は、このファイルに属します。 99/12 現在、インクルード ファイル内の行番号情報は出力されないため、このレコードはファイルに 1 つしか出力されません。
例 FILE L:23 F:prime.c
ソース コード行と実行イメージ アドレスの対応を示します。num は、直前の FILE レコードで示されたソース ファイルの行番号 (1 ベース) です。addr は、対応する絶対アドレスです。
例 N L:10 A:0x48
プロシージャ (関数) と実行イメージ アドレスの対応を示します。name はプロシージャ名、addr はプロシージャ先頭の絶対アドレス、end-addr は末尾の絶対アドレス (このプロシージャに属さない最初のアドレス) です。オプションの C:attr-str は、追加属性を通知します。
arg-sz、cod-sz、loc-sz は、それぞれスタックに積まれた引数、リターン アドレス、およびローカル変数のサイズを示します。これらの情報は、関数のコール スタックを解析するときに役立ちます。
これ以降の LS レコードで示されるローカル変数と、TMP 属性の GS レコードで示される静的変数は、このプロシージャに属します。
例 PROC S:_main T:C A:0x0 B:0x63
グローバル ラベル (変数) と実行イメージ アドレスの対応を示します。name はラベル名、type はそのラベルのタイプ (型)、addr は対応する絶対アドレスです。C:attr-str は省略される場合もあり、各種の追加属性を通知します。
例 GS S:a2? T:A[2].I1 A:0x4 C:FS,TMP
スタック上のローカル ラベルと実行イメージ アドレスの対応を示します。プロシージャへの引数もこのレコードで示されます。offs はレジスタ BP 相対オフセットで、正負に応じて先頭に「+」か「-」が付きます。引数では正、ローカル変数では負になります。ほかのフィールドは GS レコードと同じです。
例 LS S:found$ T:I2 O:-6
構造体または共用体の型定義を開始します。tag-name はタグ名 (型名) です。SUTAG レコードの後には 0 以上の _FLD レコードが続き、最後に SUEND レコードが置かれます。これらで 1 つの構造体または共用体を定義します。
SUTAG レコードで定義されたタグ名は、後続の GS、LS、または _FLD レコードの T フィールドの値で使用されます (T:T[tag_name])。
次は、Light C の stdio.h で定義されている _FILE 構造体を表すデバッグ情報です。
例
SUTAG S:_FILE
_FLD S:hdl T:U2 O:0
_FLD S:flags T:I2 O:2
_FLD S:bufsz T:U2 O:4
_FLD S:vlen T:U2 O:6
_FLD S:idx T:U2 O:8
_FLD S:buffer T:P2.I1 O:10
_FLD S:link T:P2.S[_FILE] O:12 ← 自己参照
_FLD S:pos T:I4 O:14
_FLD S:fname T:A[14].I1 O:18
SUEND O:32
構造体または共用体のメンバを示します。name はメンバ名、type はそのタイプ、offs はメンバのオフセットです。共用体の場合は、すべてのメンバで offs が 0 になります。
ビットフィールドでは、B および Z フィールドが出力されます。B フィールドはオフセット (最下位ビットの位置) を示し、Z フィールドはビットサイズを示します。次の例をご覧ください。
ソースコード例
struct st_t
{ int a:2;
int b:3;
int c:4;
int d:1;
};
そのデバッグ情報例
SUTAG S:st_t
_FLD S:a T:I2 O:0 B:0 Z:2
_FLD S:b T:I2 O:0 B:2 Z:3
_FLD S:c T:I2 O:0 B:5 Z:4
_FLD S:d T:I2 O:0 B:9 Z:1
SUEND O:2
構造体または共用体の型定義を終了します。offs は終端のオフセット、つまり構造体/共用体のサイズです。
Copyright © Tama Software Ltd, 1999-2012. | ← → 目次 索引 |