gdb调试宏定义的方法

2024-01-03 19:00:44

问题引入

逛知乎时刷到了这篇文章1,讲述了如何在GDB中调试宏,笔者在复现的时候未成功,一直显示上下文中找不到对应的符号,用文中的-g3方法仍然无法打印出该符号,使用文中的方法利用readelf查看生成的调试信息,可以看到对应的宏信息,但仍然无法打印该标志。

查阅资料

经过查询找到了这篇文章2,给出了新的调试标志-gdwarf-2。
文中使用的是C++,这里笔者使用gcc,除该标志外其余均与文章1相同,复现了该实验,证明了只有添加上述标志才能正确打印出宏信息。

示例程序

文章1中只有程序截图,并没有代码,此处附上代码,供有兴趣的同学尝试。

#define MONDAY 1
#define MAX(a, b) ((a > b) ? (a) : (b))

int main() {
    return 0;
}

文章来源:https://blog.csdn.net/weixin_45207619/article/details/135369427
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。