Android 使用NDK定位Crash

2021-06-28 20:17:20 字數 825 閱讀 8335

02-27 10:57:15.736: a/libc(32000): fatal signal 11 (sigsegv) at 0x0000000c (code=1), thread 32014 (thread-1461)

02-27 10:57:15.736: a/libc(32000): send stop signal to pid:32000 in debugger_signal_handler

這時,可以使用ndk提供的ndk-stack工具定位crash位置,步驟如下:

1.開啟cygwin。

2.進入ndk根目錄。

cd $ndk_root

3.連線安卓裝置,開啟除錯模式。

4.使用adb logcat獲取日誌資訊並通過管道把資訊傳輸給ndk-stack工具進行分析。

$ adb logcat | ./ndk-stack -sym $android_project_path/obj/local/armeabi

$android_project_path表示安卓工程根目錄,armeabi是當前裝置的cpu架構。

示例:$ adb logcat | ./ndk-stack -sym /cygdrive/d/cocos2d-x/cocos2d-x-2.2.1/projects/angrybirds/proj.android/obj/local/armeabi

這是ndk-stack分析出來的crash資訊,可以看到crash發生在jsonparser的getallsprite方法中。

參考文章:

Android 官方教程 NDK 構建專案

android 官方教程 ndk 入門 google官方原文 ndk 的核心目的之一是讓您將 c 和 c 源 構建為可用於應用的共享庫。本節說明如何構建可用於 android 應用的原生庫。首先說明android.mk檔案,該檔案為應用中使用的所有模組定義屬性。接下來介紹如何使用ndk build指...

NDK開發指南 NDK使用方法

android ndk的使用方法 ndk的使用者提示和技巧集合 如何強制顯示build命令 執行 ndk build v 1 實際生成的命令將會被顯示。這可以用來驗證你編譯的東西,並且還會檢查ndk的 build system中的錯誤。v 1 來自linux核心的build system 如何強制重...

使用NDK編譯mono

2.匯出ndk目錄到環境變數 export ndk var data android ndk r10e 3.執行ndk的工具鏈 ndk build tools make standalone toolchain.sh platform android 18 install dir tmp my an...