最近开始做android底层开发,经常遇到C/C++代码报错,logcat只给出一大串堆栈信息,而无法定位到具体代码段,后来网上搜寻发现可以使用addr2line工具根据出错地址映射到出错行,例如:
11-02 20:01:53.009: A/libc(4785): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 4785 (le.audiosynergy)
11-02 20:01:53.109: I/DEBUG(3387): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-02 20:01:53.109: I/DEBUG(3387): Build fingerprint: 'Android/aosp_hammerhead/hammerhead:4.4/KRT16M/eng.vaylb.20140708.131800:userdebug/test-keys'
11-02 20:01:53.109: I/DEBUG(3387): Revision: '11'
11-02 20:01:53.109: I/DEBUG(3387): pid: 4785, tid: 4785, name: le.audiosynergy >>> com.example.audiosynergy <<<
11-02 20:01:53.109: I/DEBUG(3387): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
11-02 20:01:53.189: I/DEBUG(3387): r0 0000003a r1 893c830d r2 893c830d r3 893c830d
11-02 20:01:53.189: I/DEBUG(3387): r4 00000000 r5 41534460 r6 00000004 r7 6d49edcc
11-02 20:01:53.189: I/DEBUG(3387): r8 be9a0508 r9 6d49edc4 sl 41534470 fp be9a051c
11-02 20:01:53.189: I/DEBUG(3387): ip 00000003 sp be9a04e8 lr 74f4dffb pc 74f4dffa cpsr 600f0030
11-02 20:01:53.189: I/DEBUG(3387): d0 725f706f6f4c6461 d1 6f725074736f483e
11-02 20:01:53.189: I/DEBUG(3387): d2 6572685473736563 d3 657268743a3a6461
11-02 20:01:53.189: I/DEBUG(3387): d4 0063006900680070 d5 0066006600750042
11-02 20:01:53.189: I/DEBUG(3387): d6 0072005000720065 d7 006300750064006f
11-02 20:01:53.189: I/DEBUG(3387): d8 0000000000000000 d9 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d10 0000000000000000 d11 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d12 0000000000000000 d13 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d14 0000000000000000 d15 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d16 000000c360a3dfef d17 0100010001000100
11-02 20:01:53.189: I/DEBUG(3387): d18 ff00f000f000f000 d19 ff00f000f000f000
11-02 20:01:53.189: I/DEBUG(3387): d20 fff0f0f0fff0f0f0 d21 c064400000000000
11-02 20:01:53.189: I/DEBUG(3387): d22 fe01ef10ef10ef10 d23 fe01ef10ef10ef10
11-02 20:01:53.189: I/DEBUG(3387): d24 fff0f0f0fff0f0f0 d25 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d26 0707070703030303 d27 0000000000000000
11-02 20:01:53.189: I/DEBUG(3387): d28 0100000001000000 d29 402e000000000000
11-02 20:01:53.189: I/DEBUG(3387): d30 0215000002130000 d31 0219000002170000
11-02 20:01:53.189: I/DEBUG(3387): scr 20000010
11-02 20:01:53.189: I/DEBUG(3387): backtrace:
11-02 20:01:53.189: I/DEBUG(3387): <span style="color:#ff0000;">#00 pc 00001ffa /system/lib/libhostplay.so (android::HostPlay::HostProcessThread::threadLoop_run()+17)
11-02 20:01:53.189: I/DEBUG(3387): #01 pc 00002083 /system/lib/libhostplay.so (android::HostPlay::start_Synergy_l()+6)
11-02 20:01:53.189: I/DEBUG(3387): #02 pc 00000c0d /system/lib/libaudio_synergy.so (setstartflag_jni(_JNIEnv*, _jobject*, int)+16)</span>
11-02 20:01:53.189: I/DEBUG(3387): #03 pc 0001dbcc /system/lib/libdvm.so (dvmPlatformInvoke+112)
11-02 20:01:53.189: I/DEBUG(3387): #04 pc 0004e123 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
11-02 20:01:53.189: I/DEBUG(3387): #05 pc 00026fe0 /system/lib/libdvm.so
11-02 20:01:53.189: I/DEBUG(3387): #06 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
11-02 20:01:53.189: I/DEBUG(3387): #07 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
11-02 20:01:53.189: I/DEBUG(3387): #08 pc 00060865 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
11-02 20:01:53.189: I/DEBUG(3387): #09 pc 000687c7 /system/lib/libdvm.so
11-02 20:01:53.189: I/DEBUG(3387): #10 pc 00026fe0 /system/lib/libdvm.so
11-02 20:01:53.189: I/DEBUG(3387): #11 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
11-02 20:01:53.189: I/DEBUG(3387): #12 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
11-02 20:01:53.189: I/DEBUG(3387): #13 pc 00060581 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
11-02 20:01:53.189: I/DEBUG(3387): #14 pc 00049d0b /system/lib/libdvm.so
11-02 20:01:53.189: I/DEBUG(3387): #15 pc 0004ce37 /system/lib/libandroid_runtime.so
11-02 20:01:53.189: I/DEBUG(3387): #16 pc 0004db5b /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
11-02 20:01:53.189: I/DEBUG(3387): #17 pc 0000105b /system/bin/app_process
11-02 20:01:53.189: I/DEBUG(3387): #18 pc 0000e34b /system/lib/libc.so (__lib