断点是如何在PPC上实现的(具体地说,是在OS上)?
例如,在x86上,通常使用int3指令(0xCC) --对于ppc,有类似的指令吗?或者,是否有其他方式设置/实现它们?
发布于 2008-11-29 09:32:01
我从一个可靠的(但目前喝醉了,所以请对此持保留态度)消息来源说,这是一个零指令是非法的,并导致某种类型的系统陷阱。
编辑:制作成社区维基,以防我的朋友喝得烂醉,简直是胡说八道:-)
发布于 2012-04-24 03:09:06
使用gdb和一个自转储的函数,我得到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 version gdb-696) (Sat Oct 20 18:20:28 GMT 2007)“
EDIT 2:如果所需的值已经在寄存器中,并且调试器不需要跟踪命中计数,那么条件断点也可能使用其他形式的tw或twi。
发布于 2008-11-29 13:43:48
除了软件断点,PPC还支持硬件断点,通过IABR (也可能是IABR2,取决于核心版本)寄存器实现。这些是指令断点,但也有数据断点(使用DABR实现,可能还包括DABR2)。如果您的核心支持两组硬件断点寄存器(即存在IABR2和DABR2 ),您可以做的不仅仅是在特定地址上触发:您可以指定整个连续的地址范围作为断点目标。对于数据断点,您还可以指定是否希望它们在写入、读取或任何访问时触发。
https://stackoverflow.com/questions/327372
复制相似问题