2

我最近逐行追踪异常的来源

Try
{
    Debug.WriteLine("ViewHelper before comObj.Send() ");
    comObj.Send();   // a very old com component
    Debug.WriteLine("ViewHelper after  comObj.Send() ");
}
Catch (Exception Ex)
{
    Debug.WriteLine("ViewHelper comObj.Send " + Ex.Message);    
}

comObj.Send() 抛出异常
异常使应用程序崩溃
但它没有在上面的 Try Catch 中捕获
我在 Visual Studio 中的所有异常上都中断了它并没有在该行中断
它在全局错误处理程序 App_DispatcherUnhandledException 中被捕获
如果我设置 e.Handled = true; 它只是被抛出了很多次并且仍然使应用程序崩溃
异常没有提供有关源的信息
我找到源的唯一方法是调试语句之前和之后的那些
异常是在百分之一的调用中抛出的,因此很难跟踪

有没有更好更快的方法来找到异常的来源?
有没有办法退回到最后一行调用?

在后面的站点中,我应该专注于 COM 组件。

4

1 回答 1

1

当我怀疑从本机代码抛出异常时,我启用debugging of unmanaged code. 来自MSDN

启用非托管代码的调试

  1. 在解决方案资源管理器中选择一个项目后,在“项目”菜单上,单击“属性”。

  2. 单击调试选项卡。

  3. 选中启用非托管代码调试复选框。

这会降低性能,因此在不调试本机组件时将其关闭。

我也会首先打破所有异常,但你提到你这样做了,所以非托管调试将是我的下一步。

于 2013-09-16T17:55:54.060 回答