Android調試工具之adbs

來源:互聯網
上載者:User

這兩天在看Android的編譯及製作rootfs工具的相關流程,無意中在build/tools/中發現了它——adbs!

adbs是一個用python寫的命令列工具,利用了adb,addr2line, objdump這三個工具,大家看了這三個工具,可能就能猜到,adbs是用來分析應用程式尤其是與函數庫相關的crash問題:)

具體的代碼就不多看了,無外乎是一些運行環境的設定。

下面就來看一下如何使用它:
1. 設定好ANDROID_PRODUCT_OUT環境變數
   ANDROID_PRODUCT_OUT="[your_path]/mydroid/out/target/product/generic",因為adbs需要使用到編譯好的symbols,所以你需要編譯整個android的source,得到與你調試環境一致的symbols檔案

2. 直接運行adbs
   adbs logcat
   
我特意準備了一個會crash的jni測試程式,得出的結果如下:
I/DEBUG   (  170): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (  170): Build fingerprint: 'tmous/htc_pyramid/pyramid:2.3.4/GRJ22/125597.1:user/release-keys'
I/DEBUG   (  170): pid: 20715, tid: 20727  >>> [your product name] <<<
I/DEBUG   (  170): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
....
I/DEBUG   (  170):  scr 80000010
I/DEBUG   (  170):
I/DEBUG   (  170):          #00 execle  /[your_path]/mydroid/bionic/libc/unistd/exec.c:84
I/DEBUG   (  170):          #01 tmalloc_small.clone.10<-tmalloc_small  /[your_path]/mydroid/bionic/libc/bionic/dlmalloc.c:3896
I/DEBUG   (  170):          #02 get_malloc_leak_info  /[your_path]/mydroid/bionic/libc/bionic/malloc_debug_common.c:168
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-objdump: '/[your_path]/xxxxxx
./prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-addr2line: '[your_path]/xxxxxx
I/DEBUG   (  170):          #03 (unknown)  (unknown)
I/DEBUG   (  170):          #04 dvmPlatformInvoke  DexDataMap.c:0
I/DEBUG   (  170):
    這裡明顯可以看出adbs給出了有用的黑體部分的資訊,即做了一些地址到具體程式函數名和行數的轉換,方便我們定位問題。
為了給大家看得更清楚,下面是單純使用logcat看到的crash資訊:
11-02 17:18:40.438: INFO/DEBUG(170): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-02 17:18:40.438: INFO/DEBUG(170): Build fingerprint: 'tmous/htc_pyramid/pyramid:2.3.4/GRJ22/125597.1:user/release-keys'
11-02 17:18:40.448: INFO/DEBUG(170): pid: 20715, tid: 20727  >>> [your product name]<<<
11-02 17:18:40.448: INFO/DEBUG(170): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
...
11-02 17:18:40.448: INFO/DEBUG(170):  scr 80000010
11-02 17:18:40.618: INFO/DEBUG(170):          #00  pc 000161c8  /system/lib/libc.so (__libc_android_abort)
11-02 17:18:40.618: INFO/DEBUG(170):          #01  pc 00013bf0  /system/lib/libc.so (dlfree)
11-02 17:18:40.618: INFO/DEBUG(170):          #02  pc 00014a72  /system/lib/libc.so (free)
11-02 17:18:40.618: INFO/DEBUG(170):          #03  pc 0000664e  [your crash app name]
11-02 17:18:40.618: INFO/DEBUG(170):          #04  pc 00011e74  /system/lib/libdvm.so
11-02 17:18:40.618: INFO/DEBUG(170): code around pc:
11-02 17:18:40.618: INFO/DEBUG(170): afd161a8 2c006824 e028d1fb b13368db c064f8df

http://blog.csdn.net/melody_lu123/article/details/6929292

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.