Jak wychwycić w którym momencie kodu występuje deadlock?

0

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).
screenshot-20220328211752.png
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

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
  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ę :-) )
  2. WaitingOn - jeśli preferujesz konsolowe narzędzia, to może być prostsze rozwiazanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1