C 在多次使用同一源文件时使用gdb设置断点
我有一个foo.c源文件,它具有以下函数实现:C 在多次使用同一源文件时使用gdb设置断点,c,macros,gdb,C,Macros,Gdb,我有一个foo.c源文件,它具有以下函数实现: #include "header.h" void PREFIX(function_name)(){ ... } 我将把这个文件复制到两个目录中(dir1和dir2)。在dir1中,我有header.h,如下所示: #define PREFIX(a) prefix1_ ## a 在dir2中,我有header.h,比如: #define PREFIX(a) prefix2_ ## a 因此,在链接过程中,我将有两个不同的函数名 当我想使用
#include "header.h"
void PREFIX(function_name)(){
...
}
我将把这个文件复制到两个目录中(dir1和dir2)。在dir1中,我有header.h,如下所示:
#define PREFIX(a) prefix1_ ## a
在dir2中,我有header.h,比如:
#define PREFIX(a) prefix2_ ## a
因此,在链接过程中,我将有两个不同的函数名
当我想使用gdb调试这个函数,并且需要在这个函数的特定行中设置断点时,我的问题就出现了。
如果我这样做:
235是函数实现中的一行,gdb将在哪个函数中实际设置断点?prefix1_函数名称还是prefix2_函数名称
有没有办法让gdb在两个节点上都设置断点
谢谢 为什么不试试呢?当我尝试时,它在两个文件中都设置了断点:
如果您只想打断一个特定的文件,只需使用该文件的完整路径名来消除歧义。在我看来,您应该在这里重新考虑您的方法。为什么同一个函数需要两个不同的名称?这似乎是一种使代码变得不必要的混乱和难以维护的方法。无论如何,我相信两者都会有,但我不知道。通过设置断点、双向调用函数以及使用回溯来验证调用路径,似乎可以相当快地对其进行测试。
b foo.c:235
(gdb) break a.c:5
Breakpoint 1 at 0x100000e87: file 3/a.c, line 5.
Breakpoint 2 at 0x100000e75: file 2/a.c, line 5.
warning: Multiple breakpoints were set.
Use the "delete" command to delete unwanted breakpoints.