gpt4 book ai didi

gdb - 如何使用 "watch"GDB?

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

我尝试通过命令“watch a”来观察“int a”的变化。然而,当它变成12时,程序并没有停止。为什么?

 /* FILE: test.c */
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv){
printf("Hello world\n");

int a = 12;
a = 10;
return 0;
}

最佳答案

它可能有助于指定您的平台、GDB 版本以及您使用的 GDB 命令的确切顺序。

这是我所看到的(GDB 似乎工作得很好):

$ gcc -g test.c

$ gdb a.out
GNU gdb (GDB) 6.8.50.20090430-cvs
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
(gdb) list
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main(int argc, char** argv){
5 printf("Hello world\n");
6
7 int a = 12;
8 a = 10;
9 return 0;
10 }
11
(gdb) b 5
Breakpoint 1 at 0x4004a7: file test.c, line 5.
(gdb) r

Breakpoint 1, main (argc=1, argv=0x7fffffffdb28) at test.c:5
5 printf("Hello world\n");
(gdb) watch a
Hardware watchpoint 2: a
(gdb) c
Hello world
Hardware watchpoint 2: a

Old value = 0
New value = 12
main (argc=1, argv=0x7fffffffdb28) at test.c:8
8 a = 10;
(gdb) c
Hardware watchpoint 2: a

Old value = 12
New value = 10
main (argc=1, argv=0x7fffffffdb28) at test.c:9
9 return 0;
(gdb) c

Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
0x00007ffff7ab3033 in exit () from /lib/libc.so.6
(gdb) c

Program exited normally.
(gdb) q

关于gdb - 如何使用 "watch"GDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835757/

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