問題分析
Native的Crash是指在C/C++運行時出錯,系統產生了Linux錯誤訊號,導致的進程出錯退出。可以通過系統的logcat來分析Crash日誌。
解決方案
應用在C/C++運行時出錯,系統產生了Linux錯誤訊號,導致的進程出錯退出。建議開發人員使用NDK工具ndk-stack進行分析定位。
Android開發中,在Java層可以方便的捕獲crashlog,但對於Native層的crashlog通常無法直接擷取,只能通過系統的logcat來分析Crash日誌。這裡我們建議開發人員使用NDK工具ndk-stack進行分析定位。
下載最新版NDK。ndk-stack工具就在NDK主目錄下。
在mqc管理中心找到出現Native Crash的測試,並下載日誌。
根據失敗機型尋找該機型的CPU資訊
ro.product.cpu.abi
,如圖三星N7100的CPU類型為armeabi-v7a。(目前mqc上的模擬器CPU類型均為x86_64。)使用ndk-stack分析出錯位置,命令格式如下:
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/$cpu.abi -dump $LOGCAT_PATH
本樣本使用的命令如下:
ndk-stack -sym ./workspace2/testNdkStack/obj/local/armeabi-v7a/ -dump ./logcat.log > result.log
在result.log中可以分析定位到出現該Crash的對應代碼檔案和具體行數。