g.p*_*dou 5 visual-studio xamarin xamarin.forms
语境
我正在使用VS 2017.3开发Xamarin.Forms应用程序。我试图诊断我的代码在哪里以及为什么发生异常。
我可以使用SDK Android模拟器(HAX x86)成功部署并调试应用程序。
但是,如果发生异常,我将看不到有关该异常的任何信息,请参阅所附图片,设置。
题
这在Android调试中正常吗?
...以及我的构建设置:
小智 5
您可以在每个平台的主构造函数上订阅 UnhandledException 事件,这将在中断调试之前为您提供有关异常的更多信息。
例如在 Android 中:
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
//subscribe to unhandled event
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
global::Xamarin.Forms.Forms.Init(this, bundle);
LoadApplication(new App());
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要每个平台的解释,请询问他们:)
我想扩展@Uraitz的答案,因为它可以帮助我找出问题所在。
首先,按照他的解释,您将要在活动中添加事件处理程序,如以下代码所示:
protected override void OnCreate(Bundle savedInstanceState)
{
...
//subscribe to unhandled event
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
...
}
private void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.ToString());
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我在其中放置了一个异常,CurrentDomainUnhandledException
以便可以检查该异常。
但是,即使有那个断点,我也运行了我的代码,仍然遇到一个令人困惑的无调用堆栈错误。
在这一点上,我认为解决方案不起作用。实际上是这样,但是我必须多次单击“播放”(继续)按钮,然后我的应用才能达到断点:
在两次单击该按钮之后,我终于找到了断点:
如果要在调试器中获取调用堆栈,则必须先进行几个层次的深入研究,但可以通过查看事件args参数来实现。
故事的寓意是-如果您添加了事件处理程序,但仍然没有达到断点(或看到输出),请继续单击“继续”按钮!
归档时间: |
|
查看次数: |
2110 次 |
最近记录: |