gpt4 book ai didi

gdb - 防止 gdb 在观察点停止

转载 作者:行者123 更新时间:2023-12-02 02:24:02 24 4
gpt4 key购买 nike

文件main.c:

#include <stdio.h>

int main()
{
int i;
for (i=0; i<30 ;i++) {
printf ("%d\n", i);
}
return 0;
}

在 gdb 中,我通常会设置一个断点,然后指定一个观察点作为要在该断点上执行的命令:

(gdb) break main
Breakpoint 1 at 0x4004b0: file main.c, line 6.
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>watch i
>end

只要监视变量发生变化,执行就会停止,问题是(据我所知)没有办法告诉 gdb 只打印监视变量的值并继续,因为它是一个嵌套的观察点。如果它是一个独立的观察点,这可以使用命令“continue”轻松完成(如果我在 main() 范围内):

(gdb) watch i
Hardware watchpoint 2: i
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>continue
>end

那么,有没有办法让 gdb 不在嵌套的观察点上停止,而只打印值的变化?或者更好的是,指定要在嵌套监视/断点上执行的命令?

我进一步尝试在 gdb 中'set complaints 0''set confirm off' 但无济于事

最佳答案

GDB 没有嵌套观察点的概念。所有断点和观察点都位于顶层,无论您将它们设置在何处。

这是你想要的:

(gdb) break main
Breakpoint 1 at 0x40052c: file t.c, line 6.
(gdb) commands
>watch i
>commands
>c
>end
>c
>end

这会在断点 1 上设置命令列表:

watch i
continue

并在观察点(创建时)上单独的命令列表:

continue

关于gdb - 防止 gdb 在观察点停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6775971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com