2011-10-06 41 views
29

我有來自BugSense的崩潰報告,所以我有關於崩潰的內存位置的信息,但它們未被符號化。此外,Bug Sense不會發送傳統的崩潰報告,但仍然給我一個錯誤跟蹤。所以我試圖使用Atos來獲取我的崩潰的確切位置。我已經在XCode 4中歸檔了該應用,並使用該版本提交給應用商店,因此我有一個dSYM文件。我已經運行下面的代碼:Atos無法從存檔應用程序的dSYM中獲取符號

atos -arch armv7 -o MyApp.app.dSYM 0x001057e9 

然而,而不是得到正確的輸出,我收到了一個錯誤:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7 

任何建議,爲什麼這可能發生?我不會從應用程序剝離調試符號。

回答

86

正確地從歸檔應用程序的的dSYM文件中獲取的符號,並從BugSense崩潰報告得到有用的信息(或與此有關的任何其他的崩潰報告):

  1. 複製從BugSense堆棧跟蹤到TextEdit或任何其他文本編輯器。確保使用「剪貼板」圖標,而不是簡單地複製文本。否則,您將無法獲得堆棧跟蹤的實際內存位置,這些位置是使用atos查找引用所必需的,並且表示您的堆棧跟蹤。
  2. 打開XCode並轉到組織者
  3. 找到您的存檔並右鍵單擊它,在查找器中將其打開。
  4. 導航到歸檔的目錄,通常~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  5. 進入特定的檔案,然後dSYMs文件夾
  6. 你會看到文件MyApp.app.dSYM,你可能會想,這是我應該運行atos文件反對!這是不正確的。 它實際上是另一個包!cd放入此包中,放入文件夾:MyApp.app.dSYM/Contents/Resources/DWARF,您會發現另一個文件,簡稱爲MyApp。這是實際的dSYM文件。
  7. 運行atos -arch armv7 -o MyApp 0x0000000(或任何內存地址)找到您的錯誤的位置,或只需atos -arch armv7 -o MyApp進入交互模式。
+19

哇,第6步在這裏幫了很多忙。謝謝! – pt2ph8

+1

「-arch armv7」 - 真的很重要,沒有它我得到了錯誤的數據 – AlexeyVMP

+2

我有一個回溯但沒有崩潰日誌,這仍然工作嗎?似乎只是給我隨機的位置。以下是我的回溯示例:MyApp 0x00054b23 MyApp + 301859 – jjxtra

3

你必須得到正確的地址。您可以使用上面的解決方案,但必須使用十六進制數學來獲得正確的內存地址。幻燈片+堆棧地址 - 加載地址。

+1

這個答案顯示瞭如何獲得提到的值:http:// stackoverflow。COM /問題/ 13574933/IOS崩潰的報告,ATOS - 不工作,如預期/ 13576028#13576028 – Kerni