2014-09-03 88 views
0

我從生產iOS應用程序發出崩潰報告,該報告已自動登錄到我們自己的服務器中。崩潰日誌[NSException說明]和[NSException callStackSymbols],一串組合看起來如下:在iOS應用程序中讀取生產崩潰日誌

Terminating app due to uncaught exception: *** setObjectForKey: object cannot be nil (key: dict_key). 

    0 CoreFoundation      0x2f00dee3 <redacted> + 154 
    1 libobjc.A.dylib      0x397a4ce7 objc_exception_throw + 38 
    2 CoreFoundation      0x2ef4917f <redacted> + 818 
    3 MyAppName       0x0010ef3f MyAppName + 229183 
    4 MyAppName       0x000e5401 MyAppName + 58369 
    5 MyAppName       0x000e4ac1 MyAppName + 56001 
    6 UIKit        0x31843a33 <redacted> + 518 

    ... (Removed for brevity) 

有了這個信息,我怎麼能產生.crash文件,可以通過symbolicatecrash命令讀取?我可以簡單地將這個崩潰日誌存儲在一個文本文件中,並將其命名爲.crash擴展名?

謝謝!

+0

您需要一個完整的標準Apple格式的崩潰報告來表明這一點。也似乎有太多的信息缺失手動逐行符號化(如應用程序的加載地址) – Kerni 2014-09-03 08:34:15

+2

加載地址是'0xe4ac1 - 56001 = 0xD7000'。您需要使用atos手動使用此地址來獲取應用程序的堆棧幀的符號。請參閱http://stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028#13576028 – Kerni 2014-09-03 08:58:24

回答

1

您需要編譯應用程序時生成的dSYM文件。 爲了得到這個,你應該去Xcode上的.app文件,右鍵點擊它並顯示在finder中,然後你應該創建一個文件夾,內含dSYM文件以及你的應用程序,然後在文件夾中運行atos命令: atos -arch armv7 -o YOU​​RAPP.app'/'yourapp'0xe4ac1 - 56001 = 0xD7000

希望它有幫助!

+0

嗨大衛,非常感謝。我用dwarfdump命令和內存地址0xD7000看到了一些有意義的東西!你是怎麼想出這個數字的?它看起來不像一個簡單的十六進制減法。 – Andree 2014-09-04 10:10:04

+0

這只是一個例子,你得到你想desymbolicate的地址,它是你的崩潰日誌的右列的行之一 – 2014-09-04 11:40:56

相關問題