native程式異常crash定位解決方案

技術小胖子發表於2017-11-08

    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,如需轉載請自行聯絡原作者


相關文章