Trace32
にCコードを使用しましたが、Cマクロの値をTrace32
に読み込みたいとします。どうやってするか?マクロ値はいくつかのレジスタに格納されますか?trace32を使用してマクロ値を読み取る
例:Trace32
でDEST_ADD
:私はマクロの値を読むにはどうすればよい
#define DEST_ADD = 0xE432;
address = htonl(DEST_ADD);
?
Trace32
にCコードを使用しましたが、Cマクロの値をTrace32
に読み込みたいとします。どうやってするか?マクロ値はいくつかのレジスタに格納されますか?trace32を使用してマクロ値を読み取る
例:Trace32
でDEST_ADD
:私はマクロの値を読むにはどうすればよい
#define DEST_ADD = 0xE432;
address = htonl(DEST_ADD);
?
Cプリプロセッサは、コード内のマクロをその値に置き換えます。そのため、結果のオブジェクトファイルにマクロが存在しなくなる可能性があります。しかし、あなただけの代わりに変数の値を印刷することができます。
Var.PRINT <variable>
をあなたもこれを見を持っている場合があります:How to check if a macro exists in an object file in C?
マクロは通常、プリプロセッサによって、その内容に置き換えられます。したがって、コンパイラはもはやマクロ名を参照しないため、ELFファイル内にそのマクロのデバッグ情報を作成することはできません。結果として、どのデバッガもマクロの名前を知ることができません。
しかし、一部のコンパイラでは、プリプロセッサマクロのデバッグ情報の生成がサポートされています。例えば。デバッグレベル3(gcc -g3
)でGCCを使用すると、コンパイラはELFファイルに ".debug_macro"というセクションを作成します。
ELFに ".debug_macro"セクションが含まれている場合は、オプション "/ MACRO"を使用して、ELFを読み込むときにTRACE32にこのセクションを考慮する必要があります。だから、あなたはその後、sYmbol.List.MACRO
ウィンドウ内のすべてのあなたのプリプロセッサマクロを参照するか、またはVar.WATCH
ウィンドウでそれらのいずれかを使用、またはVar.VALUE()
機能でそれらにアクセスしたり、Var.PRINT
コマンドでそれらを印刷することができ
Data.LOAD.Elf * /MACRO
であなたのELFなどを読み込みます。例:
Var.Watch UINT32_MAX
Var.PRINT UINT32_MAX
PRINT %Decimal Var.VALUE(UINT32_MAX)