2014-11-09 103 views
1

我嘗試使用「atos」命令行實用程序從.crash文件中找到方法名稱,但獲取錯誤的方法名稱。例如:崩潰日誌說異常是由於發送消息給UIComponent無法識別的選擇器發送激烈,但在象徵性的「atos」顯示網絡相關類中的方法。Symbolicating iOS .crash文件

如我在這裏建議的iOS crash reports: atos not working as expected在我的情況下,嘗試查看「Slide & LoadAddress」這兩者都是相同的(幻燈片:0x4000 LoadAdress:0x4000)。

而且我還驗證了我使用的.iPA文件是正確的,如下所示:https://developer.apple.com/library/mac/qa/qa1765/_index.html

我不確定發生了什麼問題。任何人都可以面對同樣的問題嗎?請建議任何其他方法。

我有一個.iPA文件和.crash文件,需要找出正確的方法名稱。

以下是完整的崩潰報告:

http://www.filedropper.com/symbolicate

的命令找出的.ipa是正確的:

dwarfdump --uuid Example.app/Example 

的命令找出方法名稱:

atos -arch armv7 -o Example.app/Example -l 0x4000 0x7f68bb0 0x3017d000 + 84904 

這是給網絡類中的方法,我沒有任何UIComponent。

如果您需要更多詳細信息,請讓我知道。

謝謝 溼婆神。

+0

請添加更多詳細信息,具體如下:1.完整(!!)的崩潰報告,2.確切的調用與調用的結果。 – Kerni 2014-11-09 11:21:24

+0

嗨Kerni,謝謝你的迴應。如果您需要更多詳細信息,請在問題中添加詳細信息,請告訴我。 – 2014-11-10 05:47:41

+1

我要求提供完整的碰撞報告,而不只是其中的一部分! – Kerni 2014-11-10 09:25:56

回答

1

有許多東西:

  1. 崩潰是由異常引起的崩潰報告沒有顯示所需的Last Exception Backtrace
  2. Symbolicating主線程只會顯示你在框架12 main.m通話和0
  3. 崩潰報告是由一個老版本的PLCrashReporter(由兩個[TODO]文本上確定的書面線程框架2未捕獲的異常處理程序頂部),或者您正在使用另一臺服務器捕獲未捕獲的異常。因爲,崩潰報告不會幫助你。
  4. 您應該使用atos與應用程序dSYM而不是應用程序二進制文件。使用應用程序二進制文件不會顯示文件名或行號,只會顯示類名和方法,如果您不從可執行文件中去除符號。但是你應該從可執行文件中去除它們,以保持二進制大小盡可能低(節省30-50%)。
  5. 你打電話給atos的方式是錯誤的。 0x7f68bb0 0x3017d000 + 84904不是一個有效的選項,事實上你的崩潰報告甚至沒有包含那個。相反,您只需在每幀二進制名稱後面使用第一個地址。因此,對於以下行:

    2 Example        0x001ffe3b 0x4000 + 2080315 
    

    如下您將使用ATOS:

    `atos -arch -armv7 -l 0x4000 -o Example.app.dSYM 0x001ffe3b` 
    

您應該更新您的崩潰報告SDK使用最新PLCrashReporter版本,並確保異常正常顯示在報告中。

+0

非常感謝您的時間和詳細的解釋Kerni。 – 2014-11-11 01:42:39

+0

3.將更新PLCrashReporter。 4.在歸檔App Store構建期間,我還沒有剝離符號,能夠獲取類和方法名稱。問題在於我的問題中提到的名稱是錯誤的。 5.地址不是我在運行atos時使用的原始樣本。您能否讓我知道如何指向.iPA的.dSYM文件?因爲當我運行atos -arch armv7 -l 0x4000 -o Example.app.dSYM 0x001ffe3b,獲取「atos無法加載文件Burst.app.dSYM爲架構armv7的符號」 – 2014-11-11 01:52:55

+0

,dSYM和原始.app在您的Xcode存檔,您用於創建.ipa。打開Xcode組織者以獲取它及其路徑。 – Kerni 2014-11-11 11:34:09

相關問題