繁体   English   中英

在 gdb 中打印 function 宏定义

[英]Print function macro definition in gdb

这是源文件片段:

#define TEST 34
#define PRINT_CONCAT(a, b) \
    printf("%d\n", a##b)

使用GCC编译并将此源文件链接到带有标志-ggdb3 -O3的二进制文件并使用gdb运行应用程序会显示以下行为:

(gdb) p TEST                                                                                                                                                                                                       
$3 = 34                                                                                                                                                                                                            
(gdb) p PRINT_CONCAT                                                                                                                                                                                               
No symbol "PRINT_CONCAT" in current context. 

有没有办法让 gdb 以任何方式扩展 function 宏?

它变得像宏展开一样简单

(gdb) macro expand PRINT_CONCAT(2, 4)                                                                                                                                                                              
expands to: printf("%d\n", 24) 

-ggdb3甚至不是必需的, -g3就足够了。 -g2似乎没有包含所需的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM