CrashSight為全平臺(移動/PC/主機)開發者提供崩潰異常捕獲、上報、分析和規避方案等全鏈路閉環專業服務。幫助開發者快速定位並解決異常問題,降低產品崩潰率,提升使用者體驗。
國內:https://crashsight.qq.com
出海/海外:https://crashsight.wetest.net
今天給大家整理了在使用CrashSight在接入、上報過程中遇到的常見問題:
1 iOS 接入、上報常見問題
1.1 接入 SDK 後崩潰沒有上報
● 檢查AppId是否設定正確;
● SDK 的初始化是否在Crash之前完成;
● 網路是否可用;
● 在測試時若之前有上報突然不上報了,可能是觸發了CrashSight的流量保護機制,請解除安裝App後再測試(並不會影響真實使用者Crash準確率)
● 是否有使用具有捕獲Crash功能的其他第三方元件,包括但是不限於firebase/fackbook/google mobile ads. 某些情況下會存在相容問題,如果使用了上述元件,請聯絡管理人員協助處理。
● 是否是觸發了iOS的強殺機制導致的崩潰。系統強殺,APP內沒有處理時間,無法上報。主要觸發條件為長時間卡頓(約5s以上),或者一定時間內CPU/GPU/記憶體佔用過高等情況。
1.2 上傳符號表為什麼需要java環境
● 我們符號表提取工具依賴於java環境,符號表工具只提取必要的資訊。
1.3 符號表上傳失敗提示uuid不匹配
● 每次構建,符號表的uuid都會發生改變,所以需要當次構建生成的符號表檔案才能還原當次構建後上傳的crash。
1.4 依賴庫字尾名不同如:libc++.dylib與libc++.tbd
● 使用iOS SDK 9.0以上編譯時新增依賴庫libc++.tbd,9.0以下新增libc++.dylib
1.5 不同SDK的功能都有哪些
● iOS SDK:用於收集iOS App的崩潰、卡頓,統計App的運營資料等
● Cocos Plugin:用於收集基於Cocos引擎的App中的崩潰,指令碼錯誤等
● Unity Plugin:用於收集基於Unity引擎的App中的崩潰,指令碼錯誤等
● Unreal Plugin:用於收集基於Unreal引擎的App中的崩潰,指令碼錯誤等
2 Android 接入、上報常見問題
2.1 開發過程中怎樣檢視CrashSight的Logcat日誌
● 參考引數配置,初始化時,設定除錯模式為True。
2.2 為什麼相同的使用者一天上報了幾百條Crash?會消耗使用者流量嗎?
● 單一使用者的上報是有流量限制的,在達到流量限制之前CrashSight都會正常上報。
2.3 每個版本都要配置符號表嗎
● 是的。
2.4 不配置還原符號表會影響異常上報嗎?會有什麼影響?
● 還原符號表的配置並不會影響上報。
● 如果沒有配置,網頁端將只能顯示原始的崩潰堆疊,不利於崩潰問題排查。
2.5 接入 SDK 後崩潰沒有上報
● 檢查AppId是否設定正確;
● SDK 的初始化是否在Crash之前完成;
● 網路是否可用;
● 在測試時若之前有上報突然不上報了,可能是觸發了crashsight的流量保護機制,請解除安裝App後再測試(並不會影響真實使用者Crash準確率)
● 是否有使用具有捕獲Crash功能的其他第三方元件,包括但是不限於firebase/fackbook/google mobile ads. 某些情況下會存在相容問題,如果使用了上述元件,請聯絡管理人員協助處理。
● 是否因為記憶體不足而被系統強殺(這種情況常發生在低端機,發生前往往極度卡頓)。
3 Windows SDK 接入、上報常見問題
無法上報崩潰:請依次檢查下列情況
⦁ 檢查dll是否正確載入;
⦁ 檢查setTQMConfig函式是否已經執行;
⦁ 製造的崩潰是否屬於CrashSight支援的範圍(特別注意的是,throw/raise型別的崩潰,不屬於支援範圍內);
⦁ 初始化之後,是否有TQM Center.exe程式執行;
⦁ TQM64/GameBabyConfig.dat檔案是否與dll同級的GameBabyConfig.dat檔案內容一致。
⦁ 崩潰產生後,是否在TQM64/dump下生成dmp檔案,如無,請檢查1-3
⦁ 崩潰產生後,生成了dmp,但是在“崩潰分析”頁面沒有看到上報,請檢查4-5
⦁ 如果1-7均無問題,還是沒有崩潰上報,請在2個配置檔案中新增下列配置。替換appid為專案appid(請務必在釋出版本中刪除該配置,否則會導致資訊洩露)。替換後執行製造崩潰,將兩個GBLog資料夾下的log檔案發給CrashSight開發,人工協助排查問題
<LogOutput>appid</LogOutput>4 Unity SDK 常見問題.
4.1 初始化SDK後,為什麼仍然無法捕獲上報C#異常?
a. 檢查是否有其他存在註冊Application.RegisterLogCallback(LogCallback)的邏輯,由於系統預設LogCallback是單播實現,所以只能維持一個回撥例項,你可以呼叫CrashSightAgent.RegisterLogCallback(CrashSightAgent.LogCallbackDelegate)方法來替代日誌回撥的註冊;
b. 檢查對應平臺的SDK元件是否已經整合到專案中
d. 檢查測試用的崩潰是否被程式碼內部捕獲了5 還原常見問題
5.1 安卓堆疊未還原
⦁ 請確認已經上傳符號表,並且可以在崩潰分析->單條崩潰->符號表頁面看到符號表檔案已上傳。(Java符號表檔案可以不用關注)
⦁ 請確認上傳的符號表不是原始的so檔案,而是經過處理的符號表。處理上傳方法請檢視[符號表上傳工具及使用說明](https://wetest.qq.com/help/do...) 或者[符號表藍盾外掛自動化上傳](https://wetest.qq.com/help/do...) 。
⦁ 請確認上一步上傳的so檔案為帶符號的檔案。特別的Unity引擎的libunity.so通常是不帶符號的,需要使用引擎目錄下或者編譯過程中的的libunity.sym.so檔案進行製作。
5.2 iOS堆疊未還原
⦁ 與安卓類似,請確認已經上傳符號表,並且可以在崩潰分析->單條崩潰->符號表頁面看到符號表檔案已上傳。
⦁ 非專案使用的模組崩潰,例如Foundation模組等,均為系統模組。系統模組的符號表由CrashSight統一管理,只有一些很舊的版本,上線時間極短的版本可能不會被還原,其他版本還原問題可與管理員聯絡。
5.3 重還原
當確保符號表已上傳後,可以通過點選“重試還原堆疊”對堆疊進行重新還原。
5.4 Unreal回撥函式return TCHAR_TO_UTF8(*message)
TCHAR_TO_UTF8巨集定義只能由於函式引數,小於128位元組在棧分配,大於128位元組在堆分配;如果大於128位元組,分號結束後,堆立即釋放,產生野指標; 正確用法:
寫在最後:
CrashSight為開發者提供異常捕獲,上報和分析服務。幫助開發者快速定位並解決異常問題,降低產品崩潰率,提升使用者體驗。支援移動/PC/主機全平臺,主要包括:
平臺:
⦁ 移動端:iOS、Android
⦁ PC端:Windows
⦁ 主機端:Nintendo Switch、PS4、XBOX
語言:
⦁ C/C++/C#、Java、Object-C/Swift
引擎:
⦁ Unity,UE4,Cocos
立刻前往官網:
國內:https://crashsight.qq.com
出海/海外:https://crashsight.wetest.net