私の質問/問題は何ですか? WinDBG を使用して、クラス ライブラリ (単体テスト プロジェクト) にあるいくつかの単体テストにアタッチしようとしていますが、マネージド例外で WinDBG を中断させることができません。
なぜ私はこれをしているのですか? 現在、シムを使用するテストがあり、この問題にぶつかっています: UnitTestIsolationException: リリース/デバッグ モードでシム テストを実行しているときに例外がスローされます
ただし、これは、これらのテストが shim を使用していない他のテストと並行して (テスト エクスプローラーで同じプレイリストで) 実行された場合にのみ発生します。個別に実行すると、テストは問題なくパスします。
そこで、WinDbg を起動し (それについては非常に限られた知識で)、テスト ランナーにアタッチし、そこで例外を中断することにしました。
私が試したこと: これは DLL であるため、テスト (テスト ランナー) 内でコードを実行するために実行可能ファイルによってロードされていることは明らかです。私はもともとこれらのテストを Visual Studio で実行していましたが、WinDbg をアタッチするプロセスを決定するのに苦労したため、代わりに vstest.console.exe を使用してテストの実行を開始し、それにアタッチしました。
問題なくアタッチでき、WinDbg はテスト ランナーの実行を停止します (イェイ!)。
ここで、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\14.0.0\Microsoft.IntelliTrace.Profiler.14.0.0.dll'.