Czy istnieją jakieś sposoby żeby wykryć które miejsce mojego kodu powoduje deadlock? Mam test integracyjny napisany z użyciem xUnit który od czasu do czasu wykonuje się w nieskończoność (przy nazwie testu jest kręcące się kółeczko oznaczające, że test jest w trakcie wykonywania).
Jedyne do czego udało mi się dojść, to uruchomić ten test w trybie debugowania i w panelu debugowania zatrzymać wykonywanie kodu (ikonka z dwoma pionowymi kreskami).
Problem polega na tym, że stack trace nie wskazuje na żaden fragment mojego kodu, więc za bardzo nawet nie wiem gdzie szukać problemu.
IDE ze screenshota to JetBrains Rider.
0
0
a jakby dodać logi?
0
Logi, zrzut pamięci, podpięcie się debuggerem i złapanie momentu z problemem.
1
Spójrz czy kod nie robi złych rzeczy.
1
- Process Explorer - zapinasz się na proces (dwuklik) i możesz obejrzeć wątki (dwuklik na wątku ), wygenerować dumpa i go analizować np. WinDbg (nie wiem czego się w .net używa do sprawnego debugowania, więc jak nie znasz WinDbg to nie idź w tę stronę :-) )
- WaitingOn - jeśli preferujesz konsolowe narzędzia, to może być prostsze rozwiazanie