2017-09-14 10 views
2

Trace32にCコードを使用しましたが、Cマクロの値をTrace32に読み込みたいとします。どうやってするか?マクロ値はいくつかのレジスタに格納されますか?trace32を使用してマクロ値を読み取る

例:Trace32DEST_ADD:私はマクロの値を読むにはどうすればよい

#define DEST_ADD = 0xE432; 
address = htonl(DEST_ADD); 

答えて

1

Cプリプロセッサは、コード内のマクロをその値に置き換えます。そのため、結果のオブジェクトファイルにマクロが存在しなくなる可能性があります。しかし、あなただけの代わりに変数の値を印刷することができます。

Var.PRINT <variable> 

をあなたもこれを見を持っている場合があります:How to check if a macro exists in an object file in C?

3

マクロは通常、プリプロセッサによって、その内容に置き換えられます。したがって、コンパイラはもはやマクロ名を参照しないため、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) 
関連する問題