2008-11-29 82 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如果所需的值已經在寄存器和調試器並不需要跟蹤命中計數的。