如何在android

时间:2015-08-22 05:45:14

标签: android android-ndk

我在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 _____?

3)来自谷歌有一个类似的问题 https://groups.google.com/forum/#!topic/android-ndk/TAzIvZiR_yk ,但在我的dumptrace中,我无法找到像#00 pc 003c329a这样的子地址,我的设备是Android 4.0.2,提前感谢!

0 个答案:

没有答案