gpt4 book ai didi

c - 在调试符号中显示宏(嵌入式)

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:03 30 4
gpt4 key购买 nike

我正在使用嵌入式应用程序,在调试期间,调试器无法解析宏符号(我的理论:因为宏在预处理中丢失了)。我最终不得不先在源代码中找到宏,然后使用定义来监视变量。

我的问题是:有没有办法将宏定义合并到 elf 文件中?如果是,我需要什么步骤(例如,我需要在编译期间设置标志)?如果没有,为什么不呢?

欢迎提供任何信息。我的确切设置是 WindRiver 编译器和 lauterbach 调试器。但是,如果您有其他环境的信息,请分享,也许我可以为我的环境找到对应的环境。

最佳答案

不确定这如何转化为您的编译器和调试器,but it's possible with GCC and GDB .

如果您重建并告诉 GCC 生成针对 GDB 优化的调试符号,使用 -ggdb3,它可以保留宏信息:

$ make KCFLAGS=-ggdb3
...
(gdb) info macro task_is_stopped_or_traced
Defined at include/linux/sched.h:218
included at include/linux/nmi.h:7
included at kernel/sched.c:31
#define task_is_stopped_or_traced(task) ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)

(gdb) macro expand task_is_stopped_or_traced(init_task)
expands to: ((init_task->state & (4 | 8)) != 0)

(gdb) p task_is_stopped_or_traced(init_task)
$2 = 0

关于c - 在调试符号中显示宏(嵌入式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317828/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com