我偶然发现了gdb的自动显示功能,这非常强大和方便。致电后
(gdb) display/i $pc
(gdb) display $rax
每个步骤后自动显示观察值:
(gdb) si
0x0804805e in print_loop_start ()
2: $rax = 0
1: x/i $pc
=> 0x804805e <print_loop_start+6>: mov 0x4(%ebp,%eax,4),%ecx
但是如果不再感兴趣的话,我如何“取消”$ rax中的价值呢?
答案 0 :(得分:15)
显示的Gdb帮助说:
&#34;使用
undisplay
取消之前发出的显示请求。&#34;
因此,如果您执行display a
,那么display b
和display c
gdb将为此请求提供数字(您可以通过发出没有参数的重播来查看)。然后,您可以将此数字与undisplay
一起使用。
示例:
(gdb) display a
1: a = 32767
(gdb) display b
2: b = 0
(gdb) display c
3: c = 0
(gdb) undisplay 2
(gdb) step
6 b = 2;
1: a = 1
3: c = 0
gdb documentation中的详细信息。