调试原生Android崩溃的最佳方法是什么?

时间:2015-09-23 14:24:12

标签: android xamarin xamarin.android mvvmcross

我在我的Xamarin Android应用程序中随机崩溃导致本机Android堆栈跟踪。这些堆栈跟踪包含的实际信息很少,我不知道如何从这里继续。

一些背景信息:App主要显示不同片段和活动中的远程(http)图像列表。 App基于MvvmCross,主要使用MvxRecyclerview + MvxImageView来显示图像。滚动和浏览某些列表后会发生崩溃。崩溃主要发生在返回Backstack上的活动时。

我最好的猜测是图像在实际仍在使用时被处理掉。但是,即使在使用中强制处理图像时,也不会导致崩溃,而是导致图像不显示。所以我不再确定我的理论了。

如何从此堆栈跟踪中获取更多信息?

堆栈跟踪:

[mono-rt] 
[mono-rt] Attempting native Android stacktrace:
[mono-rt] 
[mono-rt] at ???+0 [0xb6fa9dbf]
[mono-rt] at ???+0 [0xb6f94838]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ???+0 [0xb6f947e8]
[mono-rt] at ???+0 [0xb6f94247]
[mono-rt] at ZN7android10uirenderer10RenderNode11prepareTreeERNS0_8TreeInfoE+73 [0xb6f946a9]
[mono-rt] at _ZN7android14RootRenderNode11prepareTreeERNS_10uirenderer8TreeInfoE+44 [0xb7671dec]
[mono-rt] at ???+44 [0xb6fadf5a]
[mono-rt] at ???+44 [0xb6fb0010]
[mono-rt] at _ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+153 [0xb6fb4cc9]
[mono-rt] at _ZN7android6Thread11_threadLoopEPv+398 [0xb74219de]
[mono-rt] at _ZN7android14AndroidRuntime15javaThreadShellEPv+98 [0xb7623c62]
[mono-rt] at _ZN13thread_data_t10trampolineEPKS+122 [0xb74210fa]
[mono-rt] at _ZL15__pthread_startPv+56 [0xb749c218]
[mono-rt] at __start_thread+25 [0xb7497599]
[mono-rt] at __bionic_clone+70 [0xb748e166]
[mono-rt] 
[mono-rt] =================================================================
[mono-rt] Got a SIGSEGV while executing native code. This usually indicates
[mono-rt] a fatal error in the mono runtime or one of the native libraries 
[mono-rt] used by your application.
[mono-rt] =================================================================
[mono-rt] 
[libc] Fatal signal 11 (SIGSEGV), code 1, fault addr 0x34 in tid 22303 (RenderThread)

更新

Logcat输出包含更多信息。以前的输出来自Xamarin App控制台输出。

09-24 09:40:25.957: A/libc(3495): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x34 in tid 3517 (RenderThread)
09-24 09:40:26.058: I/DEBUG(66): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-24 09:40:26.058: I/DEBUG(66): Build fingerprint: 'generic/vbox86p/vbox86p:5.1/LMY47D/lc09011706:userdebug/test-keys'
09-24 09:40:26.058: I/DEBUG(66): Revision: '0'
09-24 09:40:26.058: I/DEBUG(66): ABI: 'x86'
09-24 09:40:26.058: I/DEBUG(66): pid: 3495, tid: 3517, name: RenderThread  >>> digipolis.ama.beta.staging <<<
09-24 09:40:26.058: I/DEBUG(66): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x34
09-24 09:40:26.066: I/DEBUG(66):     eax 00000000  ebx b704b508  ecx 00000000  edx 00000000
09-24 09:40:26.066: I/DEBUG(66):     esi a05d130c  edi 9d219b50
09-24 09:40:26.066: I/DEBUG(66):     xcs 00000073  xds 0000007b  xes 0000007b  xfs 00000087  xss 0000007b
09-24 09:40:26.066: I/DEBUG(66):     eip b701adbf  ebp a09f9124  esp a05d12d0  flags 00210246
09-24 09:40:26.066: I/DEBUG(66): backtrace:
09-24 09:40:26.066: I/DEBUG(66):     #00 pc 0007edbf  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #01 pc 00069838  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #02 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #03 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #04 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #05 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #06 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #07 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #08 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #09 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #10 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #11 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #12 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #13 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #14 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #15 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.066: I/DEBUG(66):     #16 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #17 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #18 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #19 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #20 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #21 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #22 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #23 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #24 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #25 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #26 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #27 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #28 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #29 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #30 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #31 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #32 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #33 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #34 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #35 pc 000697e8  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #36 pc 00069247  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #37 pc 000696a9  /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTree(android::uirenderer::TreeInfo&)+73)
09-24 09:40:26.067: I/DEBUG(66):     #38 pc 000bfdec  /system/lib/libandroid_runtime.so (android::RootRenderNode::prepareTree(android::uirenderer::TreeInfo&)+44)
09-24 09:40:26.067: I/DEBUG(66):     #39 pc 00082f5a  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #40 pc 00085010  /system/lib/libhwui.so
09-24 09:40:26.067: I/DEBUG(66):     #41 pc 00089cc9  /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+153)
09-24 09:40:26.067: I/DEBUG(66):     #42 pc 000169de  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+398)
09-24 09:40:26.067: I/DEBUG(66):     #43 pc 00071c62  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+98)
09-24 09:40:26.067: I/DEBUG(66):     #44 pc 000160fa  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+122)
09-24 09:40:26.067: I/DEBUG(66):     #45 pc 00021218  /system/lib/libc.so (__pthread_start(void*)+56)
09-24 09:40:26.067: I/DEBUG(66):     #46 pc 0001c599  /system/lib/libc.so (__start_thread+25)
09-24 09:40:26.067: I/DEBUG(66):     #47 pc 00013166  /system/lib/libc.so (__bionic_clone+70)
09-24 09:40:26.129: I/DEBUG(66): Tombstone written to: /data/tombstones/tombstone_03

2 个答案:

答案 0 :(得分:1)

您可能想在我之前的帖子中回答一些建议。如果Visual Studio没有打破异常,那么可以先尝试#2。然后,如果你能让它真正破解,那么#3可能会有所帮助。如果您找到更好的解决方案,请务必告诉我们。

https://stackoverflow.com/a/32655244/3850012

只是简单概述一下:

#2谈论挂钩到Android的异常事件并在其中设置断点,这使我能够真正打破Visual Studio中的异常,之前只会使应用程序崩溃并停止调试器。

#3谈谈在异常详细信息中找到更多有用信息的位置,一旦能够正确破解,就会告诉您异常可能来自哪个文件和行。

上一篇文章的答案在处理异步操作时对我有帮助,但希望你也能在它们中找到一些用处。

答案 1 :(得分:-2)

要以最佳和干净的方式获取崩溃报告,您可以添加parse

google analytics

您在MainActivity或Application类中的

。这些服务是免费的,您可以从每部手机获取所有崩溃报告。