2011-07-12 92 views
5

我在分析iPhone崩潰報告。Crashlogs:什麼是「ARM線程狀態」

而且有一些話我不明白:

Thread 6 crashed with ARM Thread State: 
r0: 0x00000000 r1: 0x00000000  r2: 0x00000001  r3: 0x00000000 
r4: 0x077aa000 r5: 0x00000006  r6: 0x0010540c  r7: 0x077a9198 
r8: 0x001a0420 r9: 0x00000065  r10: 0x3fcb8acc  r11: 0x310d1b68 
ip: 0x00000148 sp: 0x077a918c  lr: 0x36ba33bb  pc: 0x32a29a1c 
cpsr: 0x00000010 

什麼是R0,R1,RX?

當我看到:

r3: 0x00000000 

我可以假設一個 「對象」 R3是零?

任何幫助,瞭解有關carshlogs其他的事情是值得歡迎的:-)

+0

看看對WWDC2010的影片,我覺得會話317,他們走你通過什麼崩潰日誌的意思。要關注它們的主要內容是查看崩潰的線程並在堆棧中查找您的應用程序名稱以確定它在什麼時候崩潰。 –

回答

5

這些都是ARM處理器的寄存器,因爲他們是有問題的線索。

對於大多數rX寄存器,您可以更好地將它們視爲指向對象的指針,而不是對象本身。但是,他們也可以持有直接的價值或地址。

'pc'寄存器包含處理器試圖執行的代碼的最後一個地址。這對於告訴EXC_BAD_ACCESS與試圖從零地址執行代碼引起的不同之處是有用的。

你可以找到蘋果的使用這裏文檔: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html