我正在将本机 C++ 库移植到 Android,我得到以下堆栈跟踪:
06-11 14:55:15.505: I/DEBUG(138): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 14:55:15.505: I/DEBUG(138): Build fingerprint: 'htc_asia_tw/htc_shooteru/shooteru:2.3.4/GRJ22/123848.4:user/release-keys'
06-11 14:55:15.515: I/DEBUG(138): pid: 5523, tid: 5535 >>> com.xxx <<<
06-11 14:55:15.515: I/DEBUG(138): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0128d1a8
06-11 14:55:15.515: I/DEBUG(138): r0 0128d1a8 r1 45ba2577 r2 80808080 r3 00000000
06-11 14:55:15.515: I/DEBUG(138): r4 45ba2ba8 r5 00000005 r6 00000000 r7 45ba24e4
06-11 14:55:15.515: I/DEBUG(138): r8 45ba270c r9 0128d1a8 10 00000001 fp 45ba2bac
06-11 14:55:15.515: I/DEBUG(138): ip 00000073 sp 45ba2478 lr afd1b64b pc afd151e8 cpsr 60000010
06-11 14:55:15.515: I/DEBUG(138): d0 65526f666e496533 d1 6143646576656934
06-11 14:55:15.515: I/DEBUG(138): d2 772f73746e656d34 d3 65636170736b7235
06-11 14:55:15.515: I/DEBUG(138): d4 617262657a655a2f d5 2f696e6a2f434f50
06-11 14:55:15.515: I/DEBUG(138): d6 7262657a655a7451 d7 422f6e69616d2f61
06-11 14:55:15.515: I/DEBUG(138): d8 0000000000000000 d9 0000000000000000
06-11 14:55:15.515: I/DEBUG(138): d10 0000000000000000 d11 0000000000000000
06-11 14:55:15.515: I/DEBUG(138): d12 0000000000000000 d13 0000000000000000
06-11 14:55:15.515: I/DEBUG(138): d14 0000000000000000 d15 0000000000000000
06-11 14:55:15.515: I/DEBUG(138): d16 0000000000000000 d17 41d3f57724c00000
06-11 14:55:15.515: I/DEBUG(138): d18 3ff0000000000000 d19 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d20 0000000000000000 d21 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d22 3ff0000000000000 d23 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d24 3ff0000000000000 d25 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d26 0000000000000000 d27 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d28 0000000000000000 d29 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): d30 0000000000000000 d31 0000000000000000
06-11 14:55:15.525: I/DEBUG(138): scr 20000012
06-11 14:55:15.625: I/DEBUG(138): #00 pc 000151e8 /system/lib/libc.so
06-11 14:55:15.625: I/DEBUG(138): #01 pc 0001b648 /system/lib/libc.so
06-11 14:55:15.635: I/DEBUG(138): code around pc:
06-11 14:55:15.635: I/DEBUG(138): afd151c8 0a00003d e58d2004 e59d2004 e3120003
06-11 14:55:15.635: I/DEBUG(138): afd151d8 1afffff6 e0800003 e3082080 e3482080
06-11 14:55:15.635: I/DEBUG(138): afd151e8 e4901004 e0433000 f5d0f040 e041c3a2
06-11 14:55:15.635: I/DEBUG(138): afd151f8 e00cc002 e1dcc001 04901004 1a000022
06-11 14:55:15.635: I/DEBUG(138): afd15208 e041c3a2 e00cc002 e1dcc001 04901004
06-11 14:55:15.635: I/DEBUG(138): code around lr:
06-11 14:55:15.635: I/DEBUG(138): afd1b628 b910c014 a018f8dd 9906e00e 0a00ebc9
06-11 14:55:15.635: I/DEBUG(138): afd1b638 bfa8458a e007468a f8cd4648 f7f9c014
06-11 14:55:15.635: I/DEBUG(138): afd1b648 f8ddeda0 4682c014 f10d2000 465c0ef8
06-11 14:55:15.635: I/DEBUG(138): afd1b658 f80e4683 f8cd0c01 e14cb018 46d89709
06-11 14:55:15.635: I/DEBUG(138): afd1b668 f0469f07 e00c0610 7ff00000 0002040d
06-11 14:55:15.635: I/DEBUG(138): stack:
06-11 14:55:15.635: I/DEBUG(138): 45ba2438 00000000
06-11 14:55:15.635: I/DEBUG(138): 45ba243c 00000022
06-11 14:55:15.635: I/DEBUG(138): 45ba2440 45ba27f7
06-11 14:55:15.635: I/DEBUG(138): 45ba2444 afd1965f /system/lib/libc.so
06-11 14:55:15.635: I/DEBUG(138): 45ba2448 45ba270c
06-11 14:55:15.635: I/DEBUG(138): 45ba244c 45ba253c
06-11 14:55:15.635: I/DEBUG(138): 45ba2450 00000082
06-11 14:55:15.635: I/DEBUG(138): 45ba2454 45ba253c
06-11 14:55:15.635: I/DEBUG(138): 45ba2458 00000004
06-11 14:55:15.635: I/DEBUG(138): 45ba245c 00000000
06-11 14:55:15.635: I/DEBUG(138): 45ba2460 45ba24e4
06-11 14:55:15.635: I/DEBUG(138): 45ba2464 45ba270c
06-11 14:55:15.645: I/DEBUG(138): 45ba2468 45ba26cd
06-11 14:55:15.645: I/DEBUG(138): 45ba246c 00000007
06-11 14:55:15.645: I/DEBUG(138): 45ba2470 df002777
06-11 14:55:15.645: I/DEBUG(138): 45ba2474 e3a070ad
06-11 14:55:15.645: I/DEBUG(138): #00 45ba2478 45ba2ba8
06-11 14:55:15.645: I/DEBUG(138): 45ba247c afd1c17d /system/lib/libc.so
06-11 14:55:15.645: I/DEBUG(138): #01 45ba2480 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba2484 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba2488 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba248c 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba2490 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba2494 00000073
06-11 14:55:15.645: I/DEBUG(138): 45ba2498 ffffffff
06-11 14:55:15.645: I/DEBUG(138): 45ba249c 45ba24e4
06-11 14:55:15.645: I/DEBUG(138): 45ba24a0 45ba251c
06-11 14:55:15.645: I/DEBUG(138): 45ba24a4 80cbce76 /data/data/com.xxx/lib/libxxx.so
06-11 14:55:15.645: I/DEBUG(138): 45ba24a8 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba24ac 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba24b0 00000083
06-11 14:55:15.645: I/DEBUG(138): 45ba24b4 45ba2577
06-11 14:55:15.645: I/DEBUG(138): 45ba24b8 80cbce48 /data/data/com.xxx/lib/libxxx.so
06-11 14:55:15.645: I/DEBUG(138): 45ba24bc afd42428
06-11 14:55:15.645: I/DEBUG(138): 45ba24c0 00000000
06-11 14:55:15.645: I/DEBUG(138): 45ba24c4 00000000
如您所见,我在 libc.so 中只有 2 个堆栈级别。在 addr2line 之后,我知道它是 strlen 和 vprintf。我什至没有到达我的图书馆中它来自的地方。
您如何获得比这更长的堆栈跟踪?
(崩溃可能发生在与调用 JNI 函数的线程不同的线程上 - 我不知道这是否重要)。