WinDbg 单元测试 C#

WinDbg'ing Unit Tests C#

我的question/problem是什么? 我正在尝试使用 WinDBG 附加到我的一些单元测试,这些单元测试位于 Class 库(单元测试项目)中,但我无法让 WinDbg 中断托管异常。

我为什么要这样做? 目前我有使用垫片的测试并遇到了这个问题:UnitTestIsolationException: Throws Exception while running Shims test in Release/Debug mode

但是,只有当这些测试 运行 与其他一些未使用垫片的测试串联(测试资源管理器中的相同播放列表)时,才会发生这种情况。当单独 运行 时,测试正常通过。

所以,我想我会启动 WinDbg(我对它的了解非常有限),附加到测试 运行ner,并打破那里的异常。

我尝试过的: 因为这是一个 DLL,它显然被一些可执行文件加载到 运行 测试中的代码(测试 运行ner)。虽然我 最初只是 运行 在 Visual Studio 中进行这些测试,但我也无法确定要附加 WinDbg 的进程,所以我开始使用 vstest.console.exe 开始 运行测试,然后附加到那个。

我可以很好地附加,WinDbg 停止执行测试 运行ner(耶!)。

现在,我想在抛出 CLR 异常(即我的 UnitTestIsolationException)时立即中断。谷歌搜索后,我找到了 windbg 命令:sxe clr

然后我输入 g,然后程序开始 运行再次通过我的测试。

我看到的行为: WinDbg 从不在 UnitTestIsolationException 上中断 - 所有测试 运行 完成,测试结果打印到控制台,然后程序终止:

Passed   [SomePassingTestName]
Passed   [SomePassingTestName]
Failed   [TheFailedTestMethodName]
Error Message:
   Test method [TheFaileTestMethodName] threw exception:
   Microsoft.QualityTools.Testing.Fakes.UnitTestIsolation.UnitTestIsolationExceptio
n: Unexpected error returned by SetDetourProvider in profiler library 'C:\Progra
m Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsof
t\IntelliTrace.0.0\Microsoft.IntelliTrace.Profiler.14.0.0.dll'.

我更喜欢 psscor 但试试

!StopOnException -derived -create System.Exception