在调试过程中设置了一些断点,然后使用save breakpoints bps
. 通过在文件中间添加几行来修改代码。
当gdb再次启动并source bps
完成时,那些在第一次代码修改之上的断点是可以的,其余的都是相对移动的。
有没有办法用修改过的文件对断点进行智能同步?
在调试过程中设置了一些断点,然后使用save breakpoints bps
. 通过在文件中间添加几行来修改代码。
当gdb再次启动并source bps
完成时,那些在第一次代码修改之上的断点是可以的,其余的都是相对移动的。
有没有办法用修改过的文件对断点进行智能同步?
您可以通过执行以下操作在源代码中添加断点int 3
:
#include <stdio.h>
#define __DEBUG
#ifdef __DEBUG
#define __breakpoint__() __asm__ __volatile__("int $3\n")
#else
#define __breakpoint__()
#endif
int main(int argc, char **argv) {
const char *p = "Hello world!";
__breakpoint__();
printf("'%s'\n", p);
return 0;
}
有没有办法用修改过的文件对断点进行智能同步?
这取决于您如何设置断点。您可以尝试独立于行号设置它们,例如在函数名称处:
(gdb) b main
这种方式断点位置独立于行号,并与修改后的文件自动同步。