gdb试图使用监视点访问地址后,雪豹崩溃

gdb试图使用监视点访问地址后,雪豹崩溃,gdb,osx-snow-leopard,watchpoint,Gdb,Osx Snow Leopard,Watchpoint,我正在使用通过MacPorts for Snow Leopard编译的GDB 7.1调试二进制文件(仅限程序集)。我对使用findgdb命令找到的特定地址感兴趣。因此,它确实是一个有效地址: (gdb) printf "%s\n", 0x00196f34 bruno (gdb) 问题是,每当我为它设置一个监视点(watch*0x00196f34)并访问它时,系统就会崩溃并立即重新启动 我注意到硬件观察点已启用,希望结果不那么严重,我使用切换到软件观察点,设置可以使用硬件观察点0,但这并没有解决

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

(gdb) printf "%s\n", 0x00196f34
bruno
(gdb)
问题是,每当我为它设置一个监视点(
watch*0x00196f34
)并访问它时,系统就会崩溃并立即重新启动

我注意到硬件观察点已启用,希望结果不那么严重,我使用
切换到软件观察点,设置可以使用硬件观察点0
,但这并没有解决问题

我尝试使用Xcode附带的
GDB6.3
版本,并且watch运行良好。在为6.3和7.1设置此类手表时,我注意到了一个差异:

适用于gdb 6.3

(gdb) watch *0x00196f34
Watchpoint 1: *0x00196f34
(gdb) info breakpoints 
Num     Type           Disp Enb Address    What
1       watchpoint     keep y              *0x00196f34
适用于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将地址转换成十进制数字?我仍然想和GDB7一起工作,所以有什么线索吗


布鲁诺·贝拉斯科(Bruno Velasco)

不是相反吗?7.1以十进制打印地址。对!修理。。。谢谢。OTMH,处理硬件观察点上的陷阱需要操作系统支持。由于默认GDB不支持它们(或者在调试寄存器周围进行一些魔术般的舞蹈),您现在可能不想在7.1中使用该功能。