什么是符號(hào)表份企?
符號(hào)表是內(nèi)存地址與函數(shù)名蒲牧、文件名撇贺、行號(hào)的映射表。符號(hào)表元素如下所示:
<起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號(hào)>]
為什么要配置符號(hào)表冰抢?
為了能快速并準(zhǔn)確地定位用戶APP發(fā)生Crash的代碼位置松嘶,Bugly使用符號(hào)表對APP發(fā)生Crash的程序堆棧進(jìn)行解析和還原。
舉一個(gè)例子:
簡而言之挎扰,配置符號(hào)表文件就是讓網(wǎng)站中顯示的出錯(cuò)堆棧從16進(jìn)制解析為我們可以查看的關(guān)于 <起始地址> <結(jié)束地址> <函數(shù)> [<文件名:行號(hào)>]
的信息翠订。
關(guān)于符號(hào)表配置的更多信息中,在Bugly iOS 符號(hào)表配置有詳細(xì)的介紹遵倦。我這里記載幾個(gè)關(guān)于自動(dòng)上傳出現(xiàn)的問題解決尽超。
查看shell打印輸出
位置為:Report Navigators
,快捷鍵 com + 9
, 就是左側(cè)欄中第九項(xiàng)
知道在哪里查看就可以清楚當(dāng)前run或者archive出來的ipa是否成功上傳了dsYM文件
Debug模式
couldn't open file "/Users/tjsoft/Library/Developer/Xcode/DerivedData/..."
即該模式下無法生成dsYM文件梧躺,在官方文檔XCode編譯后沒有生成dSYM文件似谁?
Xcode Release編譯默認(rèn)會(huì)生成dSYM文件,而Debug編譯默認(rèn)不會(huì)生成掠哥,對應(yīng)的Xcode配置如下:
Xcode -> Build Settings -> Apple Clang - Code Generation -> Generate Debug Symbols -> Yes
Xcode -> Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File
同時(shí)巩踏,將shell中的 UPLOAD_DEBUG_SYMBOLS=1
去除注釋修改為1
Archive模式
Release模式下默認(rèn)會(huì)生成dSYM文件,在Archive打包過程中续搀,官方給的shell將控制此模式上傳的UPLOAD_ARCHIVE_ONLY
注釋了蛀缝,默認(rèn)為所有的都會(huì)release模式都會(huì)上傳,但是大部分情況下目代,我們需要bugly統(tǒng)計(jì)的情況下是Archive打包出來,用來記錄崩潰信息的嗤练。
所以在集成bugly的時(shí)候榛了,在debug模式下無需使用bugly模塊服務(wù),在代碼中使用宏debug即可
#if !DEBUG
BuglyConfig * config = [[BuglyConfig alloc] init];
config.reportLogLevel = BuglyLogLevelWarn;
[Bugly startWithAppId:appId config:config];
#endif
同時(shí)腳本中設(shè)置煞抬,避免除archive以外的Release模式上傳dSYM文件
UPLOAD_ARCHIVE_ONLY=1
腳步自動(dòng)上傳dsYM出現(xiàn)問題
com + 9
查看霜大,出現(xiàn)
Showing All Messages
curl: (26) couldn't open file "/Users/tjsoft/Library/Developer/Xcode/DerivedData/XXXXX-haahjjaondjaenfagukjupzqycwk/Build/Intermediates.noindex/ArchiveIntermediates/taiji/BuildProductsPath/BuglySymbolTemp/XXX.app.dSYM.zip"
無法找到壓縮的ZIP文件,相對應(yīng)的文件夾打開壓縮文件革答,說明Shell沒有壓縮成功战坤。仔細(xì)尋找echo信息曙强,可以看到zip erro
zip error: Nothing to do!
Shell壓縮不成功,我陸陸續(xù)續(xù)嘗試了幾次Archive途茫,有成功有失敗碟嘴。。鑒于自己對于腳本研究不深囊卜,只能求助于Google娜扇。在Bugly 自動(dòng)上傳腳本在xcode10上報(bào) zip error: Nothing to do! 錯(cuò)誤的解決方法尋找到暫時(shí)解決的方法,在搜索dsYM 后綴文件這句前面添加 sleep 2s
栅组。具體如下:
sleep 2s
for dsymFile in $(find "$DSYM_FOLDER" -name '*.dSYM'); do
??雀瓢。。玉掸。暫時(shí)先這樣解決
bugly 抽風(fēng)沒有解析的情況下
沒錯(cuò) 刃麸,在dsYM確認(rèn)UUID準(zhǔn)確的情況下,就是對于非系統(tǒng)庫的文件不解析司浪。泊业。。??
可以看到除了自己寫的文件不解析出來之外断傲,UIKitCore和CoreFoundation等都是可以脱吱。
這個(gè)時(shí)候推薦下大神寫到dsYM分析工具dSYMTools
具體源碼和介紹都寫的很清晰,這里說下 對應(yīng)bugly中的 需要填寫的內(nèi)存地址和Slide Address
首先认罩,切換為原始不解析模式箱蝠,兩列數(shù)據(jù)對應(yīng)兩個(gè)信息
分析圖如下:
2018.10.20
看Bugly官網(wǎng)中通過iTunes Connect找回中提及可以在App Store Connect中下載對應(yīng)版本的dsYM文件
這也算一個(gè)問題。垦垂。宦搬。希望有大佬看到可以順便指導(dǎo)下。劫拗。