调试本机Android崩溃的最佳方法?

调试本机Android崩溃的最佳方法?,android,xamarin,xamarin.android,mvvmcross,Android,Xamarin,Xamarin.android,Mvvmcross,我的Xamarin Android应用程序随机崩溃,导致本地Android stacktraces。这些堆栈跟踪包含的实际信息很少,我不知道如何从这里继续 一些背景信息:应用程序主要显示不同片段和活动中的远程(http)图像列表。App基于MvvmCross,主要使用MvxRecyclerview+MvxImageView显示图像。在滚动和浏览某些列表后会发生崩溃。崩溃主要发生在返回后台的活动时 我最好的猜测是,图像在实际仍在使用时被处理。但是,即使在使用时强制处理图像,也不会导致崩溃,而是导致

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

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

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

我该怎么做才能从stacktrace中获得更多信息

堆栈跟踪:

[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应用程序控制台输出

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
09-24 09:40:25.957:A/libc(3495):tid 3517中的致命信号11(SIGSEGV),代码1,故障地址0x34(渲染读取)
09-24 09:40:26.058:I/DEBUG(66):*********************************************
09-24 09:40:26.058:I/DEBUG(66):生成指纹:“通用/vbox86p/vbox86p:5.1/LMY47D/lc09011706:用户调试/测试密钥”
09-24 09:40:26.058:I/DEBUG(66):修订版:“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,名称:RenderThread>>>digipolis.ama.beta.staging要以最佳和干净的方式获取崩溃报告,您可以包括


在MainActivity或Application类中。这些服务都是免费的,你可以从每部手机上获得所有的车祸报告。

你可能想试试我在上一篇文章的回答中的一些建议。如果VisualStudio没有突破这些异常,那么可以先尝试一下2。然后,如果你能让它真正断裂,那么#3在这一点上可能会有帮助。如果你找到更好的解决方案,一定要告诉我们

仅简单概述一下:

#2讨论了挂接到Android的异常事件并在其中设置断点,这使我能够在Visual Studio中实际中断异常,而这些异常之前只会使应用程序崩溃并停止调试器

#3讨论了如何在异常详细信息中找到更多有用的信息,一旦您能够正确地中断,这些信息将告诉您异常可能来自哪个文件和行


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

这些日志会正确记录像这样的本机崩溃吗?目前我使用的是Xamarin Insights,这次崩溃甚至没有记录。托管代码中的所有崩溃都已正确记录,但这一次没有。我正在android应用程序中使用Parse,我的体验非常好。