【问题标题】:Crashlogs : What is "ARM Thread State"崩溃日志:什么是“ARM 线程状态”
【发布时间】:2011-10-03 11:31:45
【问题描述】:

我正在尝试分析 iPhone 崩溃报告。

还有一些我不明白的地方:

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 为 nil 吗?

欢迎任何帮助了解有关 carshlogs 的其他内容 :-)

【问题讨论】:

  • 观看 WWDC2010 的视频,我认为是第 317 次会议,它们会引导您了解崩溃日志的含义。在它们中要关注的主要内容是查看崩溃的线程并在堆栈中查找您的应用程序名称以确定它在什么时候崩溃。

标签: iphone crash


【解决方案1】:

这些是 ARM 处理器的寄存器,因为它们用于相关线程。

对于大多数 rX 寄存器,您最好将它们视为指向对象的指针,而不是对象本身。但是,它们也可以保存直接值或地址。

“pc”寄存器包含处理器尝试执行的代码的最后地址。这有助于区分由于尝试取消引用 nil 指针和尝试从地址零执行代码而导致的 EXC_BAD_ACCESS 之间的区别。

您可以在此处找到 Apple 的使用文档: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多