在gdb尝试使用观察点访问地址后,Snow Leopard崩溃

时间:2011-01-12 14:57:43

标签: gdb osx-snow-leopard watchpoint

我正在使用通过MacPorts for Snow Leopard编译的GDB 7.1调试二进制文件(仅限程序集)。我对使用find gdb命令找到的特定地址感兴趣。所以,它确实是一个有效的地址:

(gdb) printf "%s\n", 0x00196f34
bruno
(gdb)

问题是每当我为它设置一个观察点(watch *0x00196f34)并且它被访问时,系统会立即崩溃并重新启动。

我注意到硬件观察点已启用,然后期望不太严重的结果,我使用set can-use-hw-watchpoints 0切换到软件观察点,但这无法解决问题

我尝试使用Xcode附带的gdb 6.3版本, watch 正常工作。在为6.3和7.1设置这样的手表时,我注意到了一些区别:

for gdb 6.3

(gdb) watch *0x00196f34
Watchpoint 1: *0x00196f34
(gdb) info breakpoints 
Num     Type           Disp Enb Address    What
1       watchpoint     keep y              *0x00196f34

for gdb 7.1

(gdb) watch *0x00196f34
Hardware watchpoint 1: *1666868
(gdb) info breakpoints 
Num Type           Disp Enb Address    What
1   hw watchpoint  keep y              *1666868

为什么旧的gdb工作,以十六进制打印,而新的gdb将地址转换为十进制数?我仍然想使用gdb 7,所以任何线索在这里发生了什么?

Bruno Velasco

0 个答案:

没有答案