2008-11-29 86 views
1

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

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

回答

1

我被告知一个可靠的(但目前醉酒,所以拿一粒盐)来源,它是一个零指令,这是非法的,并导致某种形式的系统陷阱。

编辑:制作成社区维基的情况下,我的朋友是喝醉了,他在说话绝对是垃圾:-)

+4

由醉酒源提供的答案应该标记为社区酒 – 2008-11-29 09:34:33

1

最好的猜测是一个“TW”或“TWI”指令。

您可以深入了解PPC gdb的源代码,OS X可能使用与FreeBSD根目录相同的功能。

3

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

2

使用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(苹果版GDB-696)(星期六10月20日十八时20分28秒格林尼治标准时间2007) “

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