语境

我正在使用 VS 2017.3 开发 Xamarin.Forms 应用程序。我正在尝试诊断我的代码中发生异常的位置和原因。

我可以使用 SDK Android Emulator (HAX x86) 成功部署运行和调试我的应用程序。

但是,如果发生异常,我将看不到有关异常的任何信息,请参阅附加图片、设置。

问题

这在Android调试中是正常的,还是遗漏了什么?



...和我的build设置:

请您参考如下方法:

我想扩展@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()); 
    } 

在我的例子中,我在 CurrentDomainUnhandledException 里面放了一个断点所以我可以检查异常。

然而,即使在那里有那个断点,我运行我的代码仍然得到一个令人困惑的无调用堆栈错误。



在这一点上,我认为解决方案不起作用。事实上是这样,但在我的应用程序到达断点之前,我必须多次单击播放(继续)按钮:



单击该按钮后 两次 ,终于到了断点:



如果您想在调试器中获取调用堆栈,则必须在它可用之前深入研究几个级别,但您可以通过查看事件 args 参数来实现。



这个故事的寓意是——如果你已经添加了事件处理程序,但你仍然没有到达断点(或看到输出)——继续点击继续按钮!


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!