禁用WPF异常包装以进行调试

时间:2011-11-01 18:22:52

标签: c# wpf debugging exception

有没有办法在调试时禁用WPF非常烦人的异常包装?

一个示例是一个拥有文本框的窗口,文本框绑定到一个属性,该属性上的getter抛出一个异常,该异常无法由表示框架处理(例如抛出新的StackOverflowException()) )。

我应该看到的是

        get
        {
            throw new StackOverflowException(); // < Exception happened here
        }

相反,我所看到的是......

    No Source Available
    Call Stack Location:
    PresentationFramework.dll!MS.Internal.Data.PropertyPathWorker.RawValue(int k) + 0x64 bytes  

由于WPF的异常包装,有时也会捕获并分派此异常,然后重新抛出或隐藏在MS.Internals深处,并且无法返回到实际的异常站点。这导致我们看到了一个巨大的PresentationFramework.dll,PresentationCore.dll和WindowsBase.dll的callstack,但没有用户代码,除了App.Main()。

这发生在绑定,创建期间调用的事件以及其他完全随机的情况下,没有押韵或理由(按钮单击期间的异常有时对我这样做)。现在是的,我可以查看异常内部的堆栈跟踪,但堆栈跟踪也几乎毫无意义,因为我无法返回到该帧以查看抛出时的变量。

1 个答案:

答案 0 :(得分:3)

通常在调试时我会使用debug - &gt;公共语言运行时异常抛出的异常和选择。然后,这将在抛出异常时停止。

Visual Studio 2010 Exceptions dialog with common language runtime exceptions ticked