2016-07-28 54 views
0

我已經廣泛使用了Google,並且某人遇到的情況涉及不同的Xcode版本(因此也包含不同的構建選項)或存在dSYM文件。Xcode存檔中的空dSYM文件夾

所以,這是情況。我通過Xcode收到了一份崩潰報告。這只是內存地址。試圖在項目中打開它給我相同的內存地址。考慮手動符號,但爲此,我需要我的dSYM文件對應於我建立的檔案。但是當我爲查找器中創建的檔案顯示包內容時,它的dSYM文件夾是空的。在歸檔時

我的Xcode設置爲:

DEBUG_INFORMATION_FORMAT: DWARF with dSYM File

STRIP_INSTALLED_PRODUCT: Yes切換到No沒什麼區別。

DEPLOYMENT_POSTPROCESSING: No切換到Yes沒有區別。

此外,我在上傳檔案到iTunes Connect時選擇了「包含符號」。

Apple的部署過程令人困惑,不必擔心發生崩潰時,resport實際上是可讀的!

所以我的問題是:

1)爲什麼我的檔案缺少的dSYM文件?

2)如果dSYM文件已經生成,它可能在哪裏? 3)如果我真的沒有dSYM文件,我還能以某種方式獲得人類可讀的符號名稱嗎?我已經獲得了我上傳的原始檔案並訪問了該構建的源代碼。如果我的產品>再次歸檔(並且假設這次dSYM確實生成了),我可以使用這個dSYM文件嗎?或者它會有不同的UUID,導致它與崩潰日誌原因不兼容...呃...蘋果?

的Xcode版本:6.4

這裏就是我的崩潰日誌看起來像在Xcode主辦單位: enter image description here

感謝。

編輯:

我升級到7.3的Xcode嘗試此之前,但它也可能適用於版本6

解決問題(1)是設置在項目生成設置如下:

GCC_GENERATE_DEBUGGING_SYMBOLS

回答

1

對於問題1),我也不知道。這可能是Xcode的一個bug。您可以再次存檔
相同的代碼,然後生成一個相同的dSYM文件。

對於問題2),您可以在文件夾'〜/ Library'中搜索'dSYM',因爲'dSYM'文件通常在那裏輸出。如果找不到,請嘗試在整個磁盤中搜索它。

對於問題3),您必須具有系統庫符號文件,該文件在「二進制映像」部分中列出了崩潰日誌。你可以在'〜/ Library/Developer/Xcode/iOS DeviceSupport'中找到它。如果找不到,則可以將具有與崩潰日誌中顯示的OS版本相同的iPhone連接到Xcode。 Xcode完成處理之後,可以將iPhone的系統庫符號文件複製到該文件夾​​中。然後,您可以重新標記崩潰日誌。

對於問題3a),對於相同的應用程序代碼,不同的存檔可能有不同的dSYM文件(UUID)。如果您用它來表示碰撞日誌,那麼符號化的碰撞線非常接近真實的碰撞線,所以這也可以幫助您推斷碰撞的真正原因。

從您的屏幕截圖中,應用程序代碼中只有一行不會被符號化。現在,您可以通過使用導致崩潰再次存檔的應用程序代碼來生成應用程序的dSYM文件。生成dSYM文件後,使用命令行dwarfdump -u yourApp.app.dSYM獲取它的UUID,然後檢查包含在「二進制映像」第一行中的uuid。如果否,您可以將'Binary images'的第一行中的UUID修改爲從dwarfdump -u XXX.dSYM獲得的新UUID,請注意cpu架構。完成此操作後,您可以在Xcode中重新標記崩潰日誌,或使用命令行symbolicatecrash crashreport.crash yourApp.app.dSYM。請注意,您必須保證應用程序代碼的版本與崩潰日誌中的版本相同,否則結果令人難以置信。

+0

關於您的解決方案(3),你的意思是 '二值圖像' 部分做?這部分在哪裏?我用我的崩潰日誌的屏幕截圖編輯了我的問題。我沒有看到任何這樣的部分。 – Ash

+0

崩潰日誌不會在Xcode崩潰中完全顯示。標準的崩潰日誌將在[這裏](https://developer.apple.com/library/ios/technotes/tn2151/_index.html#top)中解釋。如果要完全符號化崩潰日誌,則可以在「二進制映像」部分列出所有符號文件,並且每個文件都使用「二進制映像」部分中列出的UUID進行標記。現在,如果您已生成代碼的dSYM文件,則可以完全符號化您的崩潰。 – hwris

+0

我在xccrashpoint文件中做了'Show package contents',並通過導航找到3個.crash文件。當我在文本編輯器中打開這些文件時,在「二進制圖像」下,只有非常長的.dylib文件名和文件名列表,以/ System/Library /開頭。我應該怎麼做這些?作爲此過程的一部分,我必須生成一個dSYM文件嗎?你能否詳細說明一下。也許提供分步說明?謝謝。 – Ash

0

上的XCode 8.3.2,選擇是在生成調試符號enter image description here