Xcode dSYM 文件


1、什么是 dSYM 文件

  • Xcode 編譯項目后,我們會看到一個同名的 dSYM 文件,dSYM 是保存 16 進制函數地址映射信息的中轉文件,我們調試的 symbols 都會包含在這個文件中,並且每次編譯項目的時候都會生成一個新的 dSYM 文件,位於 /Users/<用戶名>/Library/Developer/Xcode/Archives 目錄下,對於每一個發布版本我們都很有必要保存對應的 Archives 文件。

  • AUTOMATICALLY SAVE THE DSYM FILES 這篇文章介紹了通過腳本每次編譯后都自動保存 dSYM 文件

2、dSYM 文件有什么作用

  • 當我們軟件 release 模式打包或上線后,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯誤,這個時候我們就需要分析 crash report 文件了,iOS 設備中會有日志文件保存我們每個應用出錯的函數內存地址,通過 Xcode 的 Organizer 可以將 iOS 設備中的 DeviceLog 導出成 crash 文件,這個時候我們就可以通過出錯的函數地址去查詢 dSYM 文件中程序對應的函數名和文件名。大前提是我們需要有軟件版本對應的 dSYM 文件,這也是為什么我們很有必要保存每個發布版本的 Archives 文件了。

3、如何將文件一一對應

  • 每一個 xx.app 和 xx.app.dSYM 文件都有對應的 UUID,crash 文件也有自己的 UUID,只要這三個文件的 UUID 一致,我們就可以通過他們解析出正確的錯誤函數信息了。

  • 1)查看 xx.app 文件的 UUID,在終端中輸入命令 :

    $ dwarfdump --uuid xx.app/xx (xx代表你的項目名)
    
  • 2)查看 xx.app.dSYM 文件的 UUID ,在終端中輸入命令:

    dwarfdump --uuid xx.app.dSYM
    
  • 3)crash 文件內 Binary Images: 下面一行中 <> 內的 e86bcc8875b230279c962186b80b466d 就是該 crash 文件的 UUID,而第一個地址 0x1000ac000 便是 slide address:

    Binary Images:
    0x1000ac000 - 0x100c13fff Example arm64 <e86bcc8875b230279c962186b80b466d> /var/containers/Bundle/Applic
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM