2013-03-07 165 views
3

我正在使用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这个地址或获得相应的加载地址?

+0

可能重复的[Symbolicating iPhone App Crash Reports](http://stackoverflow.com/questions/1460892/symbolicating-iphone-app-crash-reports) – 2013-03-07 10:06:20

+0

@Benoit我认为问题在于,sven.b没有足够的声望来评论你刚刚发布的答案,并且sven.b认为该线程中的给定答案已无效,因为已添加到iOS的空间随机化4.3。 – 2013-03-07 10:11:09

+0

谢谢你Benoit,你提到的帖子有点过时了atos命令是正确的,但是不能从堆栈跟踪中获取符号地址 – 2013-03-07 10:11:40

回答

1

load address0xb3000

幸运的是,你有从你的应用程序二进制文件中删除的符号,否则这将不可见。

此外,由于抛出的异常,此次崩溃发生,所以崩溃报告应该会给你一个Last Exception Backtrace,显示发生实际异常的位置以及实际的异常原因。发布的堆栈跟踪第5行的调用很可能不会为您提供大量的相关信息。您收到的崩溃信息看起来相当有限:(

+0

是的。不过谢谢。你的回答是正确的。 – 2013-03-07 13:32:37