Какъв е моят въпрос/проблем? Опитвам се да използвам WinDBG, за да прикача към няколко от моите модулни тестове, които са в библиотека от класове (Проект за тест на модул), но не мога да накарам WinDbg да прекъсване при управлявани изключения.
Защо правя това? В момента имам тестове, които използват подложки и се натъквам на този проблем: UnitTestIsolationException: Извежда изключение при изпълнение на Shims тест в режим Release/Debug
Това обаче се случва САМО когато тези тестове се изпълняват в тандем (един и същ списък за изпълнение в изследователя на тестове) с някои други тестове, които не използват подложки. Когато се изпълняват индивидуално, тестовете преминават добре.
Така че реших, че ще стартирам 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'.
procdump -e 1 <pid or unique name>
- person Lieven Keersmaekers   schedule 08.01.2016