2013-03-07 150 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