如何解读这个Android堆栈跟踪?

5
我大约一个月前发布了一款关于Android的应用程序,但是它似乎会以某种特定的方式随机崩溃,而且比我想象中更加频繁。我和我的合作开发者不确定是否可以从生成的错误信息中获取任何有用信息,所以希望有人能够为我们解决这个问题。该应用程序使用Xamarin Mono框架构建。通常情况下会出现sqlite3_step + XXX错误,偶尔会出现sqlite3_prepare_v2 + XX错误。无论哪种情况,堆栈跟踪通常都类似于下面的内容。 在/system/lib / libsqlite.so内/native崩溃,在/system/lib/libsqlite.so(/system/lib/libsqlite.so(sqlite3_step+510))
Build fingerprint: 'motorola/XT926_verizon/vanquish:4.4.2/KDA20.62-15/15:user/release-keys'
Revision: 'p300'
pid: 863, tid: 892, name: myapp.android >>> com.myapp.android <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000c
r0 60311d70 r1 00000000 r2 00002210 r3 00000000
r4 60311c20 r5 00000000 r6 ffffffec r7 00000000
r8 00001000 r9 00000000 sl 00002400 fp 00000000
ip 00000000 sp 612ff208 lr 409ee113 pc 40978564 cpsr 60030030
d0 61642f617461642f d1 642e6d6f632f6174
d2 72657372756f6367 d3 6e612e7765697665
d4 31222c223631222c d5 5d223831222c2237
d6 3a2273726170222c d7 332c332c332c335b
d8 4194997000000000 d9 0000000000000000
d10 0000000000000000 d11 0000000000000000
d12 0000000000000000 d13 0000000000000000
d14 0000000000000000 d15 0000000000000000
d16 69662f64696f7264 d17 726367642f73656c
d18 0000000000000001 d19 0001000400000000
d20 0061006e006e0075 d21 00490065006c0062
d22 0065006c0070006d d23 0074006e0065006d
d24 3fd1b10853a79915 d25 3fd554fa9ca0567a
d26 3fdb6db71408e660 d27 3fe33333332d4313
d28 3ff0000000000000 d29 0000000000000001
d30 fff0000000000000 d31 ffffffff00000000
scr 60000011

backtrace:
#00 pc 0003f564 /system/lib/libsqlite.so
#01 pc 0000bcfd /system/lib/libsqlite.so
#02 pc 0000c1df /system/lib/libsqlite.so
#03 pc 000acf41 /system/lib/libsqlite.so
#04 pc 000ac5a9 /system/lib/libsqlite.so
#05 pc 0000d62f /system/lib/libsqlite.so (sqlite3_step+510)
#06 pc 0002112c <unknown>

code around pc:
40978544 b1487a20 6f80f418 6c20d106 68027ae1
40978554 47906952 d13b2800 e9d46c20 68012314
40978564 a90268cf 000ce88d 47b8220c f418bb80
40978574 d1096f80 7ae16c20 29036802 bf086952
40978584 0110f041 bb184790 0112e9d4 0f00f1b9
40978594 0114e9c4 f04fbf18 b14d0901 0f00f1b9
409785a4 2000d106 462062e0 f914f000 d10f2800
409785b4 00b0f8d4 e0046801 f0228b0a 830a0204
409785c4 29006a09 6841d1f8 20046081 200073e0
409785d4 4479490b 68095871 42919a07 b008bf04
409785e4 87f0e8bd e8caf7c5 00085a96 ffffffec
409785f4 000859ac ffffafd8 0008599a ffffaff0
40978604 000858ea 4ff0e92d 4680b087 f8d8460c
40978614 6810203c f8d8b998 23000000 1078f8d8
40978624 93006987 7361f647 0308f2c0 f0414019
40978634 2100031e 460747b8 f0402f00 f8d880c2

code around lr:
409ee0f0 2d0e4605 bb6dd02d 25009803 db292800
409ee100 ec0af74f 9803491d 44314479 1180f8d1
409ee110 25004788 2500b1f0 bf182c00 f74f6a25
409ee120 4917eb54 4a102d00 68034479 0001eb02
409ee130 f8df4e14 eb06c03c bf080201 44614605
409ee140 0024e88d 7212f646 f2419002 f753000a
409ee150 2500f907 f0208a60 82600008 b0044628
409ee160 bf00bd70 0000fe1a ffff5ae1 ffffa6dc
409ee170 ffffa615 0000fdde 0000014c 0000fdb8
409ee180 0000fd98 ffffa60f 4830e92d 460cb09e
409ee190 4a1e491d 44794605 441168e8 21b0f8d1
409ee1a0 4790a904 f74fb308 6800eb10 6a2c6168
409ee1b0 eb0af74f 2c004916 44794a16 eb026803
409ee1c0 4d150001 c054f8df 0201eb05 4604bf08
409ee1d0 e88d4461 f6460014 9002724e 700af240
409ee1e0 740af240 f8bcf753 9810e00a f0809911 

使用addr2line或ndk-stack来解码调用堆栈... - itechevo
1个回答

0

ADB Logcat

建议使用adb logcat获取日志并查找线索。这可能有点棘手,但至少其中有可用的信息。

清理ADB日志

注意:如果您可以可靠地重现崩溃,最好先清除旧的ADB日志,这样您就不必浏览大量的附加信息。然后只需重现崩溃并立即获取日志即可。

命令:adb logcat -c

(来源:https://dev59.com/vXA75IYBdhLWcg3wZ4Jr#3315407)

获取adb日志的步骤:

  1. 打开命令提示符
  2. 导航到platform-tools文件夹。
    • (PC上的默认路径:C:\android-sdk-windows\platform-tools)
  3. 运行adb connect
  4. PC命令:adb logcat -vtime -d > "%USERPROFILE%\Desktop\android_logcat.txt"

https://kb.xamarin.com/customer/portal/articles/1675684#adb-logcat

需要注意的事项:

通常,对于崩溃问题,您会看到一个堆栈跟踪和类似以下的消息:

=================================================================
在执行本地代码时收到了 SIGSEGV。这通常表示 mono 运行时或应用程序使用的本机库之一中存在致命错误。
=================================================================

不幸的是,这个消息本身相当泛泛而谈,但至少告诉您崩溃发生在日志的哪个位置。一旦您使用它来查找大致位置,就可以查看导致崩溃的堆栈跟踪。

还可以查找在崩溃发生之前最后启动的活动/意图:http://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/android_debug_log/#Interesting_Messages


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接