Symbolicate iOS崩溃堆栈跟踪无崩溃日志
问题描述:
我正在使用BugSense来跟踪iOS应用程序中的崩溃。最近我注意到实际使用中象征性堆栈痕迹的问题。Symbolicate iOS崩溃堆栈跟踪无崩溃日志
问题是苹果引入了iOS 4.3的地址空间随机化,因此感兴趣的堆栈地址不能单独用于检索导致崩溃的正确方法。
我目前正试图通过计算
symbol address = slide + stack address - load address
,以获得正确的地址我已经有滑动和堆栈地址,但是从我的理解加载地址只能在崩溃报告,我无法通过获得被发现BugSense。 堆栈跟踪看起来像
0 CoreFoundation 0x342723e7 + 162
1 libobjc.A.dylib 0x3bf63963 objc_exception_throw + 30
2 CoreFoundation 0x3427229d + 0
3 Foundation 0x34b48fa3 + 90
4 UIKit 0x360b5bd9 + 7640
5 MyApp 0x000c6e99 0xb3000 + 81561
6 UIKit 0x3623c2ff 0x3607e000 + 1827583
7 UIKit 0x361b8737 0x3607e000 + 1287991
8 UIKit 0x361a9869 0x3607e000 + 1226857
9 UIKit 0x361a97ad 0x3607e000 + 1226669
10 CoreFoundation 0x34247941 0x341b0000 + 620865
11 CoreFoundation 0x34245c39 0x341b0000 + 613433
12 CoreFoundation 0x34245f1d 0x341b0000 + 614173
13 CoreFoundation 0x341b923d CFRunLoopRunSpecific + 356
14 CoreFoundation 0x341b90c9 CFRunLoopRunInMode + 104
15 GraphicsServices 0x37d9733b GSEventRunModal + 74
16 UIKit 0x360d52b9 UIApplicationMain + 1120
17 MyApp 0x000b61bf 0xb3000 + 12735
18 MyApp 0x000b4a08 0xb3000 + 6664
有另一种方式来symbolicate这个地址或获得相应的加载地址?
答
load address
是0xb3000
。
幸运的是,你有从你的应用程序二进制文件中删除的符号,否则这将不可见。
此外,由于抛出的异常,此次崩溃发生,所以崩溃报告应该会给你一个Last Exception Backtrace
,显示发生实际异常的位置以及实际的异常原因。发布的堆栈跟踪第5行的调用很可能不会为您提供大量的相关信息。您收到的崩溃信息看起来相当有限:(
+0
是的。不过谢谢。你的回答是正确的。 – 2013-03-07 13:32:37
可能重复的[Symbolicating iPhone App Crash Reports](http://*.com/questions/1460892/symbolicating-iphone-app-crash-reports) – 2013-03-07 10:06:20
@Benoit我认为问题在于,sven.b没有足够的声望来评论你刚刚发布的答案,并且sven.b认为该线程中的给定答案已无效,因为已添加到iOS的空间随机化4.3。 – 2013-03-07 10:11:09
谢谢你Benoit,你提到的帖子有点过时了atos命令是正确的,但是不能从堆栈跟踪中获取符号地址 – 2013-03-07 10:11:40