Zawsze, gdy test jednostkowy nie powiedzie się z powodu StackOverflowException
, proces testu jednostkowego natychmiast się kończy - jedynym sposobem, aby dowiedzieć się, co się stało (o czym mi wiadomo) jest debugowanie zrzutu awaryjnego procesu testów jednostkowych uzyskanych przez następujące znaleźć tutajTesty jednostek debugowania, które zawiodły z powodu wyjątku StackOverflow
Jaki jest najprostszy sposób na uzyskanie nazwę badanej jednostki, który był uruchomiony w momencie, że StackOverflowException
został rzucony kroki? Nawet podczas debugowania testu urządzenia staram się znaleźć nazwę bieżącego testu jednostki, który znajduje się na dole stosu, a Visual Studio nie wyświetli całego stosu w oknie debugowania, ponieważ jest zbyt duży.
Czy jest jakiś sposób sprawdzenia, który test jednostkowy nie powiódł się, nie zbierając i nie debugując zrzutów awaryjnych?
Nie jestem pewien, co jest obcięcie wyjątku. Czy mógłbyś spróbować zrobić własny stacktrace za pomocą 'new System.Diagnostics.StackTrace (true)' w zegarku i/lub oknie pośrednim? Może to zapewni ci pełny ślad. – Caramiriel
@Caramiriel Uruchamianie tego podczas interaktywnego debugowania daje komunikat "Nie można ocenić wyrażenia, ponieważ bieżący wątek znajduje się w stanie przepełnienia stosu.", Nie można uruchamiać bezpośrednich wyrażeń podczas debugowania zrzutu awaryjnego, ponieważ proces w tym momencie nie działa. Cały ślad stosu nie jest pokazany, ponieważ jest masywny. – Justin
@Justin: Jeśli twoja architektura studia wizualnego (np. X86) pasuje do twojej aplikacji, możesz również załadować SOS i zrzucić stos, wpisując '! Clrstack' w bezpośrednim oknie. Wydaje się, że pracujesz dla mnie. ('0028ed6c 00340147 ConsoleApplication45.Program.Rec() 0028edac 003400fb ConsoleApplication45.Program.Main (System.String [])') – Caramiriel