【问题标题】:How can I see the contents of the DAR (data access register) on PPC using gdb?如何使用 gdb 在 PPC 上查看 DAR(数据访问寄存器)的内容?
【发布时间】:2012-09-01 08:23:09
【问题描述】:

我正在嵌入式 PPC 平台上进行调试(arch 是 ppc750),我注意到当二进制文件崩溃时,如果我在 gdb 中键入“信息寄存器”,我将看不到 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

这甚至可能吗?我正在使用 gdb 7.0.1(我知道有点旧,但更新的版本不能很好地与我们古老的工具链配合使用)。

【问题讨论】:

    标签: gdb embedded


    【解决方案1】:

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

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

    您是否在“裸机”上进行调试?如果没有,您首先不应该寻找DAR 寄存器。

    【讨论】:

    • 不,我不是在“裸机”上调试,而是在用户空间的 Linux 上调试。我注意到,即使在 PPC 上也收到 SIGSEGV,导致无效访问的地址在信号处理程序中可用(在 si_addr 字段中,IIRC)。只是想知道这些信息是否也可以在 gdb 中使用。根据 gdb 列表中的人员的说法,从 gdb 7.5 开始检查 PPC 上的 $_siginfo 就可以使用,但是我们在使用 7.3 及更高版本以及使用我们古老的工具链构建的二进制文件时遇到了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多