PPC断点

时间:2008-11-29 09:12:22

标签: macos debugging assembly powerpc

如何在PPC上实现断点(在OS X上,具体)?

例如,在x86上,它通常使用INT 3指令(0xCC)完成 - 是否有与ppc相当的指令?或者是否有其他方式设置/实施?

6 个答案:

答案 0 :(得分:6)

使用gdb和hexdumps本身的函数,我得到0x7fe00008。这似乎是tw instruction

0b01111111111000000000000000001000
  011111                           31
        11111                      condition flags: lt, gt, ge, logical lt, logical gt
             00000                 rA
                  00000            rB
                       0000000100  constant 4
                                 0 reserved

即。将r0与r0进行比较并捕获任何结果。

GDB反汇编只是extended mnemonic trap

编辑:我正在使用“GNU gdb 6.3.50-20050815(Apple版gdb-696)(2007年10月20日18:20:28 GMT)”

编辑2:如果所需的值已经在寄存器中,条件断点也可能会使用其他形式的twtwi并且调试器不需要跟踪命中数。

答案 1 :(得分:4)

除了软件断点之外,PPC还支持硬件断点,通过IABR(可能IABR2实现,具体取决于核心版本)寄存器。这些是指令断点,但也有数据断点(使用DABR实现,可能还有DABR2)。如果您的内核支持两组硬件断点寄存器(即IABR2和DABR2存在),那么您可以做的不仅仅是触发特定地址:您可以将整个连续的地址范围指定为断点目标。对于数据断点,您还可以指定是希望它们在写入,读取还是任何访问时触发。

答案 2 :(得分:1)

最佳猜测是'tw'或'twi'指令。

你可以深入研究PPC gdb的源代码,OS X可能使用与FreeBSD root相同的功能。

答案 3 :(得分:1)

答案 4 :(得分:0)

指令断点通常使用TRAP指令或IABR调试硬件寄存器实现。

示例实施: ArchLinuxAppleWiiWii U

答案 5 :(得分:-1)

我被一个可靠的(但目前已经醉了,所以带着一点点盐)告诉我这是一个零指令,这是非法的,会导致某种系统陷阱。

编辑:如果我的朋友喝醉了以至于他说的是绝对的垃圾,请加入社区维基: - )