如何在PPC上实现断点(在OS X上,具体)?
例如,在x86上,它通常使用INT 3指令(0xCC)完成 - 是否有与ppc相当的指令?或者是否有其他方式设置/实施?
答案 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:如果所需的值已经在寄存器中,条件断点也可能会使用其他形式的tw
或twi
并且调试器不需要跟踪命中数。
答案 1 :(得分:4)
除了软件断点之外,PPC还支持硬件断点,通过IABR
(可能IABR2
实现,具体取决于核心版本)寄存器。这些是指令断点,但也有数据断点(使用DABR
实现,可能还有DABR2
)。如果您的内核支持两组硬件断点寄存器(即IABR2和DABR2存在),那么您可以做的不仅仅是触发特定地址:您可以将整个连续的地址范围指定为断点目标。对于数据断点,您还可以指定是希望它们在写入,读取还是任何访问时触发。
答案 2 :(得分:1)
最佳猜测是'tw'或'twi'指令。
你可以深入研究PPC gdb的源代码,OS X可能使用与FreeBSD root相同的功能。
答案 3 :(得分:1)
PowerPC架构使用“陷阱”。
答案 4 :(得分:0)
答案 5 :(得分:-1)
我被一个可靠的(但目前已经醉了,所以带着一点点盐)告诉我这是一个零指令,这是非法的,会导致某种系统陷阱。
编辑:如果我的朋友喝醉了以至于他说的是绝对的垃圾,请加入社区维基: - )