This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好!
如何在.out 文件中查找函数静态变量的 DWARF 调试信息(地址、类型)?
通过扫描.debug_info 中的所有编译单元、我可以在锚定到标签 DW_TAG_variable 的所有其他变量上找到此信息。
Thx、
电表
假设您是指在函数内定义的静态变量、而不是在文件范围内定义的静态变量。
静态变量是函数内的另一个 DW_TAG_variable。 唯一的区别是 DW_AT_LOCATION 属性。
考虑一下这个功能...
int fxn (int 参数变量) { static int statical_variable = 0; int local_variable = argical_variable; ++static_d变量; return static_d变量+ local_variable; }
您不会说您使用的是哪种 TI 编译器。 目前、我假设您使用 TI ARM 编译器。 这些命令会生成该文件、然后使用 OFD 实用程序在名为 dw.txt 的文本文件中捕获.debug_info DWARF 信息。
% armcl -s -opt_level=off -mv7m3 file.c % armofd -g -obj_display=none -dwarf_display=none、dinfo file.obj > dw.txt
然后检查 dw.txt 并找到以下行...
000000c2 4. DW_TAG_variable (.data) 000000c3. DW_AT 位置 DW_OP_addr 00000000 000000c9. DW_AT 名称 STATUS_variable 000000dd dw_at_TI_symbol_name static_dvariable$1 000000ef 1. DW_TAG_formal_parameter (.text) 000000f0 DW_AT 位置 DW_OP_reg0 000000f2 DW_AT 名称 参数变量 00000108 dw_at_TI_symbol_name 参数变量 0000011a 4. DW_TAG_variable (.text) 0000011b DW_AT 位置 DW_OP_Breg13 0 0000011e DW_AT 名称 参数变量 00000134 dw_at_TI_symbol_name 参数变量 00000146 4. DW_TAG_variable (.text) 00000147 DW_AT 位置 DW_OP_Breg13 4. 0000014a DW_AT 名称 local_variable 0000015d dw_at_TI_symbol_name local_variable
除了 DW_AT_LOCATION 属性外、它们都是相似的。
谢谢、此致、
乔治