Xamarin.Android异步方法中没有堆栈跟踪

5

可能是因为该方法是匿名的。 - Cheesebaron
不,堆栈跟踪应该始终具有其起源。正确的异常必须具有托管代码调用者。这是他们将“很快”修复的错误,这意味着在我们开发的应用程序交付给所有者之后... - Immons
幸运的是,有一种叫做更新的东西。 - Cheesebaron
@Cheesebaron,您能确认这个问题在更新中已经解决了吗?是哪一个版本呢? - thumbmunkeys
2个回答

2

这里有另一个解决方案,对于我来说很有效。只需在您的应用程序或主活动中添加此处理程序:

AndroidEnvironment.UnhandledExceptionRaiser += delegate(object sender, RaiseThrowableEventArgs args){
            typeof (System.Exception).GetField("stack_trace", BindingFlags.NonPublic | BindingFlags.Instance)
                .SetValue(args.Exception, null);
            throw args.Exception;
        };

上一篇帖子中有解释,链接如下:https://forums.xamarin.com/discussion/45219/stack-trace-not-captured-properly


1
大家好,我已经为这个bug找到了解决方法,下面是详细的步骤,以处理它并让Xamarin.Insights正常工作。
  1. 在Android项目中添加文本文件(名称不重要),并将其从属性中的“Content”设置为“AndroidEnvironment
  2. 在创建的文本文件中添加以下标志:XA_BROKEN_EXCEPTION_TRANSITIONS=true - 此标志表示我们将使用旧版的Xamarin.Android 4.x异常处理方式
  3. 然后在您的Android项目中添加全局android异常处理程序,它将处理通常会在Xamarin.Insights(或其他报告工具)能够完成一些工作之前崩溃应用程序的Android异常。

AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) => { args.Handled = true; }

完成上述步骤后,Xamarin.Insights就可以为您正常工作了 :)


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