2017-09-14 146 views
2

我在Trace32中使用了C代碼,我想要讀取Trace32中的C宏值。怎麼做?將宏值存儲在某個寄存器中嗎?使用trace32讀取宏值

如:

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

我如何讀取宏的值:DEST_ADDTrace32

回答

3

宏通常由預處理其內容所取代。因此,編譯器不再「查看」宏名稱,因此無法在ELF文件中爲其創建調試信息。因此,任何調試器都無法知道宏的名稱。

但是,有些編譯器支持爲預處理器宏生成調試信息。例如。如果您使用調試級別爲3的GCC(gcc -g3),編譯器會在您的ELF文件中創建一個名爲「.debug_macro」的節。

如果ELF包含「.debug_macro」部分,你必須告訴TRACE32加載ELF時,使用選項‘/ MACRO’考慮這一部分。所以,你與加載ELF如

Data.LOAD.Elf * /MACRO 

然後,您可以看到您所有的預處理宏在sYmbol.List.MACRO窗口或Var.WATCH窗口中使用其中任何一個,或與Var.VALUE()功能與Var.PRINT命令對其進行訪問或打印出來。例如:

Var.Watch UINT32_MAX 
Var.PRINT UINT32_MAX 
PRINT %Decimal Var.VALUE(UINT32_MAX)