如何使用arm-linux-androideabi-addr2line 【轉http://blog.csdn.net/hun_sunny/article/details/8350151】

來源:互聯網
上載者:User
如何使用arm-linux-androideabi-addr2line  如何使用arm-linux-androideabi-addr2line轉載地址:http://blog.csdn.net/yanzheng1113/article/details/8148091

1.將ndk中的arm-linux-androideabi-addr2line可執行檔的路徑加入設定檔~/.bashrc中,例如:

export PATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin

 

2.使配置生效:source ~/.bashrc

 

3.使用工具。例如:arm-linux-androideabi-addr2line -C -f -e  ~/workspace/DLNA/libs/armeabi/libctrlpt.so 0003deb4

其中,0003deb4為堆棧資訊中pc的值。

 

 

android應用崩潰的調試方法

有兩種方法可以分析 crash 的堆棧資訊

1 google提供了一個python指令碼,可以從

http://code.google.com/p/android-ndk-stacktrace-analyzer/
下載這個python指令碼,然後使用 adb logcat -d > logfile 匯出 crash 的log,
使用 arm-eabi-objdump 位於build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面
把so或exe轉換成彙編代碼,如:arm-eabi-objdump -S mylib.so > mylib.asm,
使用指令碼

python parse_stack.py <asm-file> <logcat-file>

2 直接使用NDK下面的arm-linux-androideabi-addr2line 

(D:\android-ndk-r8\toolchains\arm-linux- 
androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe)

例如:arm-linux-androideabi-addr2line -C -f -e libxxx.so 0x#####(address)

 

android調試工具addr2line使用補充

使用addr2line追蹤自有動態庫(so檔案)的bug, 補充:
解決出現 ??:0 , 沒法展示原始碼行數的問題

在Android.mk 檔案中:

Java代碼
  1. LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -Wl,-Map=test.map -g  

補充2個編譯參數  -Wl,-Map=test.map -g .
增加gcc警告和調試標誌

arm-linux-androideabi-addr2line -C -f -e /項目目錄/obj/local/armeabi/libfaa_jni.so 0024362e

tip: 1,注意調試檔案的位置在obj目錄下,並非libs目錄下產生的so檔案
       2,0024362e 為出錯的機制位置

還有:
在jni/目錄下增加Application.mk 檔案, 修改為debug 模式,進行調試 APP_OPTIM := debug
具體application.mk 檔案的配置見: http://blog.csdn.net/weidawei0609/article/details/6561280

有兩種方法可以分析 crash 的堆棧資訊

1 google提供了一個python指令碼,可以從

http://code.google.com/p/android-ndk-stacktrace-analyzer/
下載這個python指令碼,然後使用 adb logcat -d > logfile 匯出 crash 的log,
使用 arm-eabi-objdump 位於build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面
把so或exe轉換成彙編代碼,如:arm-eabi-objdump -S mylib.so > mylib.asm,
使用指令碼

python parse_stack.py <asm-file> <logcat-file>

2 直接使用NDK下面的arm-linux-androideabi-addr2line 

(D:\android-ndk-r8\toolchains\arm-linux- 
androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe)

例如:arm-linux-androideabi-addr2line -C -f -e libxxx.so 0x#####(address)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.