Crashlogs:什么是“ARM线程状态” [英] Crashlogs : What is "ARM Thread State"

查看:581
本文介绍了Crashlogs:什么是“ARM线程状态”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要分析iPhone崩溃报告。

I'm trying to analyse iPhone Crash Reports.

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

And there is something that I don't understand :

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?

What are r0, r1, rx??

r3: 0x00000000


b $ b

我可以假设对象r3是nil?

Can I assume that an "object" r3 is nil ?

欢迎任何有助于了解carshlogs的其他事项的帮助: - )

Any help to understand other things about carshlogs is welcome :-)

推荐答案

这些是ARM处理器的寄存器,因为它们是有问题的线程。

These are the ARM processor's registers as they were for the thread in question.

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

For most of the rX registers, you can better think of them as pointers to objects than objects themselves. However, they can also hold direct values or addresses.

'pc'寄存器包含处理器尝试执行的代码的最后地址。这有助于说明通过尝试取消引用nil指针并尝试从地址零执行代码而导致的EXC_BAD_ACCESS之间的差异。

The 'pc' register contains the last address of code the processor tried to execute. This is useful to tell the difference between EXC_BAD_ACCESS caused by trying to dereference a nil pointer and trying to execute code from address zero.

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

You can find Apple's documentation of their use here: http://developer.apple.com/library/ios/#documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARMv6FunctionCallingConventions.html

这篇关于Crashlogs:什么是“ARM线程状态”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆