如何使用gdb在PPC上查看DAR(数据访问寄存器)的内容?

如何使用gdb在PPC上查看DAR(数据访问寄存器)的内容?,gdb,embedded,Gdb,Embedded,我正在嵌入式PPC平台上进行调试(arch是ppc750),我注意到当二进制崩溃时,如果我在gdb中键入“info registers”,我就看不到DAR(数据访问寄存器)的内容,它应该显示程序试图读取的内存地址-我只得到陷阱寄存器,它告诉我异常的类型: (gdb) info registers r0 0x1034875e 271877982 r1 0x7fffed30 2147478832 r2

我正在嵌入式PPC平台上进行调试(arch是ppc750),我注意到当二进制崩溃时,如果我在gdb中键入“info registers”,我就看不到DAR(数据访问寄存器)的内容,它应该显示程序试图读取的内存地址-我只得到陷阱寄存器,它告诉我异常的类型:

(gdb) info registers
 r0             0x1034875e       271877982
 r1             0x7fffed30       2147478832
 r2             0xfd7f7a0        265811872
 [...]
 pc             0xf18d718        0xf18d718
 msr            0xd032   53298
 cr             0x80000848       2147485768
 lr             0xf18d6f8        0xf18d6f8
 ctr            0xf235d90        253975952
 xer            0x20000000       536870912
 orig_r3        0x26     38
 trap           0x300    768
这可能吗?我使用的是GDB7.0.1(我知道有点旧,但最近的版本不能很好地使用我们古老的工具链)

我看不到DAR(数据访问寄存器)的内容

据我所知,该寄存器仅在内核模式下可用

你在“裸机”上调试吗?如果没有,您不应该首先查找
DAR
寄存器

我看不到DAR(数据访问寄存器)的内容

据我所知,该寄存器仅在内核模式下可用

你在“裸机”上调试吗?如果不是,您首先不应该查找
DAR
寄存器。

不,我不是在“裸机”上调试,而是在用户空间的Linux上调试。我注意到,即使在PPC上接收到SIGSEGV,导致无效访问的地址也可以在信号处理程序中使用(在si_addr字段中,IIRC)。我只是想知道gdb中是否也有这些信息。据gdb列表上的人说,检查PPC上的$_siginfo自gdb 7.5起就起作用,但我们在使用7.3及更高版本的二进制文件时遇到了问题。不,我不是在“裸机”上调试,而是在用户空间的Linux上调试。我注意到,即使在PPC上接收到SIGSEGV,导致无效访问的地址也可以在信号处理程序中使用(在si_addr字段中,IIRC)。我只是想知道gdb中是否也有这些信息。据gdb列表上的人说,检查PPC上的$_siginfo自gdb 7.5起就可以工作,但我们在使用7.3及更高版本的二进制文件时遇到了问题,这些二进制文件是用我们古老的工具链构建的。