C 调试时无法按名称找到静态变量
我的一个编译单元中有一个静态变量,在编译时没有优化:C 调试时无法按名称找到静态变量,c,debugging,static,iar,C,Debugging,Static,Iar,我的一个编译单元中有一个静态变量,在编译时没有优化: static __no_init enum_type status; 我试图在调试器中查看此变量,但找不到它。逐步执行更新状态的函数可以看到要写入特定内存地址0xFB9F8的预期值 但是,该内存地址似乎没有名称。以下是链接器映射显示的内容: NEAR_N Relative segment, address: 000FB9F8 - 000FB9F8 (0x1 bytes), align: 0 Segment part 3.
static __no_init enum_type status;
我试图在调试器中查看此变量,但找不到它。逐步执行更新状态的函数
可以看到要写入特定内存地址0xFB9F8的预期值
但是,该内存地址似乎没有名称。以下是链接器映射显示的内容:
NEAR_N
Relative segment, address: 000FB9F8 - 000FB9F8 (0x1 bytes), align: 0
Segment part 3. Intra module refs: function1
function2
实际上,function1
、function2
等都是访问该变量的函数
如何使该变量在调试器中可见?当问题已经写了一半的时候,我找到了解决方案,所以我决定用自己的答案发布它 无论如何,链接器选项中有一个设置,它正是我所需要的,毫不奇怪地被称为“模块本地符号”:
将其设置为“Include all”可使调试器可以使用静态变量。当问题已经写了一半时,我找到了解决方案,因此我决定将其与自我回答一起发布 无论如何,链接器选项中有一个设置,它正是我所需要的,毫不奇怪地被称为“模块本地符号”:
将其设置为“Include all”可使调试器使用静态变量。能否为正在使用的体系结构添加标记?此问题/解决方案可能仅限于某些版本的电子战。我知道EWARM中不存在该选项。请为您使用的体系结构添加一个标记,好吗?此问题/解决方案可能仅限于某些版本的电子战。我知道在EWARM中不存在这种选择。