3

有没有一种好方法可以收集在 android 应用程序的本机代码中发生的崩溃的崩溃转储,然后在台式机上象征该崩溃转储。

尝试集成 google breakpad 并成功收集故障转储。然后尝试符号化崩溃堆栈跟踪,但它不是那么有用。符号化崩溃堆栈中没有可用的文件名和行号信息。

符号化的部分输出如下所示:

Operating system: Android
                  0.0.0 Linux 3.4.5-923538 #1 SMP PREEMPT Wed Mar 5 16:20:36 KST 2014 armv7l
CPU: arm
     ARMv7 ARM part(0x4100c070) features: swp,half,thumb,fastmult,vfpv2,edsp,neon,vfpv3,tls,vfpv4,idiva,idivt
     4 CPUs

Crash reason:  SIGSEGV
Crash address: 0x0

Thread 0 (crashed)
 0  libctest.so + 0x16dc
     r0 = 0x417bba60    r1 = 0x65600019    r2 = 0x00000001    r3 = 0x00000000
     r4 = 0x6db6bc18    r5 = 0x417bbfd8    r6 = 0x00000000    r7 = 0x6d753cd4
     r8 = 0xbee580f8    r9 = 0x6d753ccc   r10 = 0x417bbfe8   r12 = 0x738c76d9
     fp = 0xbee5810c    sp = 0xbee580f8    lr = 0x417de850    pc = 0x738c76dc
    Found by: given as instruction pointer in context
 1  dalvik-heap (deleted) + 0x134346
     sp = 0xbee58108    pc = 0x42ba5348
    Found by: stack scanning
 2  libdvm.so + 0x4f28d
     sp = 0xbee58110    pc = 0x4180f28f
    Found by: stack scanning
 3  data@app@com.example.ctest-3.apk@classes.dex + 0x9a3d1
     sp = 0xbee58118    pc = 0x778443d3
    Found by: stack scanning
 4  libctest.so + 0x16d7
     sp = 0xbee5811c    pc = 0x738c76d9
    Found by: stack scanning
 5  dalvik-mark-stack (deleted) + 0x2d61017
     sp = 0xbee5812c    pc = 0x65600019
    Found by: stack scanning
 6  core.odex + 0x7b6c8
     sp = 0xbee58134    pc = 0x6e7d96ca

有什么遗漏吗?

4

1 回答 1

1

您是否为 libctest.so 转储了符号?Breakpad wiki 上的Linux Starter Guide提供了有关如何执行此操作的信息。如果您不提供 minidump_stackwalk 使用的符号,那么它无法为您提供可用的堆栈。

于 2014-08-14T20:01:47.410 回答