我在android中使用addr2line时遇到问题,而我的应用程序收到SIGSEGV信号并崩溃。
这是stacktrace:
08-22 12:35:31.883: I/DEBUG(2332): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-22 12:35:31.883: I/DEBUG(2332): Build fingerprint: 'generic/bcm7241_guangxi/bcm7241:4.0.1/ICS_MR0/eng.wuzhigang.20130409.170739:eng/test-keys'
08-22 12:35:31.884: I/DEBUG(2332): pid: 1127, tid: 1228 >>> com.my.alc <<<
08-22 12:35:31.884: I/DEBUG(2332): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 17c33007
08-22 12:35:31.885: I/DEBUG(2332): zr 00000000 at 00000000 v0 283d6680 v1 283d6524
08-22 12:35:31.885: I/DEBUG(2332): a0 17c33007 a1 f4404300 a2 f4404300 a3 17c33007
08-22 12:35:31.885: I/DEBUG(2332): t0 17c33007 t1 00000000 t2 00000000 t3 00000000
08-22 12:35:31.885: I/DEBUG(2332): t4 2e6bb000 t5 2e6cb000 t6 000018ff t7 0000000f
08-22 12:35:31.885: I/DEBUG(2332): s0 000000dc s1 5c2eba88 s2 0000000f s3 fffff4d4
08-22 12:35:31.885: I/DEBUG(2332): s4 2e7c7408 s5 0105d0e8 s6 00000100 s7 00000000
08-22 12:35:31.885: I/DEBUG(2332): t8 5c030cd0 t9 779c3820 k0 00000002 k1 00000000
08-22 12:35:31.885: I/DEBUG(2332): gp 2e6c4000 sp 2e7c73a0 s8 2e6c7fa0 ra 5c04ef69
08-22 12:35:31.885: I/DEBUG(2332): hi 00000408 lo bd84cc00 bva 17c33007 epc 282112a8
08-22 12:35:31.920: E/Cocos2dxBitmap(1127): error to create ttf type face: /system/fonts/FZLTXH_GBK.ttf
08-22 12:35:31.955: E/Cocos2dxBitmap(1127): error to create ttf type face: /system/fonts/FZLTXH_GBK.ttf
08-22 12:35:32.015: D/dalvikvm(1127): GC_CONCURRENT freed 1665K, 25% free 18494K/24455K, paused 2ms+15ms
08-22 12:35:32.566: I/DEBUG(2332): #00 pc 282112a8 sp 2e7c73a0
08-22 12:35:32.566: I/DEBUG(2332): #01 pc 5c04ef69 sp 2e7c73a8 /data/data/com.my.alc/lib/libmyapp.so
08-22 12:35:32.573: I/DEBUG(2332): #01 ra 5c04ef69 /data/data/com.my.alc/lib/libmyapp.so
08-22 12:35:32.574: I/DEBUG(2332): code around pc:
08-22 12:35:32.576: I/DEBUG(2332): 28211288 033fc824 0009ffc0 001fff82 033fc825 $.?.........%.?.
08-22 12:35:32.576: I/DEBUG(2332): 28211298 8fbf0000 27bd0008 01003825 02407825 .......'%8..%x@.
08-22 12:35:32.576: I/DEBUG(2332): 282112a8 a0f00000 01e09025 24010001 00e14021 ....%......$!@..
08-22 12:35:32.576: I/DEBUG(2332): 282112b8 0101482b 00e15026 01075826 01405027 +H..&P..&X..'P@.
08-22 12:35:32.576: I/DEBUG(2332): 282112c8 014b5024 000a57c2 27bdfff8 afbf0000 $PK..W.....'....
08-22 12:35:32.577: I/DEBUG(2332): code around ra:
08-22 12:35:32.577: I/DEBUG(2332): 5c04ef48 e7ec60eb f7e11c38 e7e8fe09 1e04b570 .`..8.......p...
08-22 12:35:32.577: I/DEBUG(2332): 5c04ef58 6820d012 d0132800 008968a1 feaef7e1 .. h.(...h......
08-22 12:35:32.578: I/DEBUG(2332): 5c04ef68 07ab6925 1c20d509 f7e12114 07ebfea7 %i.... ..!......
08-22 12:35:32.578: I/DEBUG(2332): 5c04ef78 1c20d502 fdf2f7e1 6820bd70 fdeef7e1 .. .....p. h....
08-22 12:35:32.579: I/DEBUG(2332): 5c04ef88 e7f06925 480bb500 4478b083 2b006903 %i.....H..xD.i.+
08-22 12:35:32.579: I/DEBUG(2332): memory map around addr 17c33007:
08-22 12:35:32.579: I/DEBUG(2332): 10001000-10100000
08-22 12:35:32.579: I/DEBUG(2332): (no map for address)
08-22 12:35:32.579: I/DEBUG(2332): 27fae000-2820e000
08-22 12:35:32.579: I/DEBUG(2332): stack:
08-22 12:35:32.579: I/DEBUG(2332): 2e7c7360 5c04617b /data/data/com.my.alc/lib/libmyapp.so
08-22 12:35:32.579: I/DEBUG(2332): 2e7c7364 5c0456a3 /data/data/com.my.alc/lib/libmyapp.so
08-22 12:35:32.579: I/DEBUG(2332): 2e7c7368 00000000
08-22 12:35:32.579: I/DEBUG(2332): 2e7c736c 5c04617b /data/data/com.my.alc/lib/libmyapp.so
08-22 12:35:32.580: I/DEBUG(2332): 2e7c7370 00009004
1)我知道如何使用addr2line来获取真正的inmy libmyapp.so,但当地址类似0x00__, 0x01__, 0x02
时,它很容易..
2)问题是pc 5c04ef69 sp 2e7c73a8
是内存中的相对地址,有没有办法将5c04ef69转换为0x00 _____?
#00 pc 003c329a
这样的子地址,我的设备是Android 4.0.2,提前感谢!