native程式異常crash定位解決方案
Android程式崩潰退出的時候,會將崩潰的堆疊資訊儲存在/data/tombstones目錄下。
該目錄需要ROOT許可權才能夠訪問。所以為了訪問該路徑,手機必須先ROOT破解。jni或者java
程式碼崩潰的資訊都被記錄。該目錄下會有九個tombstones_0(1-9),生成的崩潰資訊會迴圈寫入
該檔案中,測試之前可以講所有的檔案刪除,就可以得到唯一的一個崩潰日誌。生成的檔案
記錄了詳細的堆疊資訊。
為了拷貝到電腦上,需要通過adb shell進入手機終端,然後su,獲取root許可權,接著
拷貝檔案到sdcard上,退出adb shell,之後,通過adb pull /sdcard/tombstone_00 E:
拷貝到E盤
該檔案詳細記錄了程式碼崩潰時候的具體資訊,包括了崩潰的堆疊,如果能夠獲取到該資訊,就可以通知堆疊瞭解崩潰點的資訊,但是一般情況下,我們看不到該檔案。
當我們發現/data目錄為空的情況下,實際上表示我們沒有root訪問許可權,(root是最高階的訪問許可權,而不是啟動的時候的訪問檔案的許可權,這個許可權需要對android手機進行許可權進行破解)
注意
檢視tombstons檔案,發現很多情況下,沒有提供原始碼錯誤的函式名稱和原始碼的錯誤行號,可以通過ndk-stack.exe 程式對崩潰日誌再次定位
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump tombstons
例子
D:DevelopmentAndroidandroid-ndk-r10b
dk-stack.exe–sym armeabi-v7a –dump E:docs ombston_01 > E:/detail.txt
附錄:
不同的手機遇到空指標的時候,處理的方式是不一樣的,小米手機直接閃退,而華為平板依然能夠直接執行,跳過崩潰的錯誤,說明測試多種機型的重要性。
參考
http://cmzx3444.iteye.com/blog/1463035
本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1408644,如需轉載請自行聯絡原作者
相關文章
- Tomcat常見異常及解決方案程式碼例項Tomcat
- [持續更新]hive異常解決方案Hive
- iOS中常見 Crash 及解決方案iOS
- 77種Java異常總結 附解決方案Java
- SpringCloud BeanCurrentlyInCreationException 異常解決方案SpringGCCloudBeanException
- Redis快取的主要異常及解決方案Redis快取
- 一種 Laravel 異常上下文解決方案Laravel
- 【xiaotie】Asp.Net異常Asynchronous 的解決方案ASP.NET
- Ionic異常及解決
- maven異常:Updating Maven Project 的統一解決方案MavenProject
- React Native 異常處理React Native
- javaWeb常見異常的解決方法JavaWeb
- flutter的log過濾,快速定位程式碼異常Flutter
- 如何定位導致Crash的程式碼位置
- sCrypt 合約開發除錯技巧: 定位及解決 checkSig / checkPreimage 異常除錯
- 資料庫異常難定位?GaussDB(DWS)運維神器TopSQL來解決資料庫運維SQL
- flume file channel 異常解決
- Unknowncolumn'*'in'fieldlist'異常解決
- CentOS 常見異常及解決辦法CentOS
- CrashSight異常崩潰管理解決方案
- migrate:rollback 時 dropForeign 丟擲的異常解決方案
- “The last packet sent successfully to the server was 0 milliseconds ago. ”異常解決方案ASTServerGo
- Shiro身份驗證丟擲AuthenticationException異常,解決方案Exception
- Oracle Net Configuration Assistant failed異常的解決方案OracleAI
- Android Native Crash 收集Android
- H5定位終極解決方案H5
- 高精度定位的幾種解決方案
- 高併發解決方案詳解(9大常見解決方案)
- Flutter異常捕獲和Crash崩潰日誌收集Flutter
- IOS系統閃退異常(Crash)捕獲處理iOS
- 前端異常監控、上報及js壓縮程式碼定位前端JS
- React Native Android 啟動異常React NativeAndroid
- 2015異常問題解決方案經驗總結(一)
- No bean named 'cacheManager' availablej 異常解決BeanAI
- Mysql 的一些異常解決MySql
- 資料庫異常hang住解決資料庫
- JVM 異常退出的問題解決JVM
- 在Flutter中嵌入Native元件的解決方案Flutter元件