gcc 在gdb中打印函数宏定义

bksxznpy  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(293)

下面是源文件片段:

#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以任何方式展开函数宏?

fjnneemd

fjnneemd1#

它变得非常简单

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

甚至不需要-ggdb3-g3就足够了。-g2似乎不包括所需的信息。

相关问题