查看android native crash後的堆棧資訊

來源:互聯網
上載者:User

每次發生android runtime exception後都手足無措,因為拿到的都是如下資訊:

adb logcat:

F/libc    (21559): Fatal signal 11 (SIGSEGV) at 0x00030010 (code=1), thread 21578 (m.yunos.browser)I/DEBUG   (  160): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***I/DEBUG   (  160): Build fingerprint: 'Android/full_mako/mako:4.2.1/JOP40G/eng.yuanzhijun.20130509.085707:userdebug/test-keys'I/DEBUG   (  160): Revision: '11'I/DEBUG   (  160): pid: 21559, tid: 21578, name: m.yunos.browser  >>> com.yunos.browser <<<I/DEBUG   (  160): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00030010I/DEBUG   (  160):     r0 00030000  r1 74514f0c  r2 0000001c  r3 74252cf8......I/DEBUG   (  160): backtrace:I/DEBUG   (  160):     #00  pc 001879b2  /system/lib/libwebcore.tgl.soI/DEBUG   (  160):     #01  pc 001b8109  /system/lib/libwebcore.tgl.so......

只能大概知道是libwebcore.tgl.so裡發生了錯誤,如何能列印出詳細的堆棧資訊呢?起碼也得知道是哪個方法拋的錯。

開始我嘗試自己寫代碼來捕獲signal,然後再調用backtrace和backtrace_symbols,但在android的linux上用不了兩個方法,估計是得裝gcc的擴充庫,先把這個方案擱置一下,後面再嘗試。

然後我再嘗試NDK下的ndk-stack,但看語義應該需要NDK編譯的才能用,反正我嘗試了ndk-stack -sym ...  -dump ...後,還是失敗,原因是symbols找不到,如果是基於ndk開發的android native應用應該是沒問題,但這裡我是直接要調試android源碼,也擱置一下。

最後嘗試用NDK下的addr2line,這個能用,方法就是:

ndk path\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe -C -f -e Y:\webos_nexus4\out\target\product\mako\symbols\system\lib\libwebcore.tgl.so 001879b2

其中Y:\webos_nexus4\out\target\product\mako\symbols\system\lib\libwebcore.tgl.so是編譯出的symbols,001879b2對應的是開頭看到的堆棧中的地址資訊:

I/DEBUG   (  160):     #00  pc 001879b2  /system/lib/libwebcore.tgl.so
運行後得到如下結構:
WebCore::InspectorInstrumentation::instrumentingAgentsForContext(WebCore::ScriptExecutionContext*)

雖然很笨拙,但起碼查到了錯誤發生在哪個方法裡。

前面說的兩個思路應該可行,我後面再嘗試一下

聯繫我們

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