Wyświetlanie wątków i zadań w oknie stosów równoległych (C#, Visual Basic, C++)

Dotyczy:yes Visual Studio Visual Studio nodla komputerów Mac noVisual Studio Code

Okno Stosy równoległe jest przydatne do debugowania aplikacji wielowątków. Ma kilka widoków:

Korzystanie z okna stosów równoległych

Aby otworzyć okno Stosy równoległe , musisz być w sesji debugowania. Wybierz pozycję Debuguj>stosy równoległe systemuWindows>.

Kontrolki paska narzędzi

Okno Stosy równoległe zawiera następujące kontrolki paska narzędzi:

Toolbar in Parallel Stacks window

Ikona Kontrola Opis
Threads/Tasks combo box Wątków/Pole kombi Zadania Przełącza widok między stosami wywołań wątków i stosami wywołań zadań. Aby uzyskać więcej informacji, zobacz Widok zadań i Widok wątków.
Show Only Flagged icon Pokaż tylko oflagowane Pokazuje stosy wywołań tylko dla wątków oflagowanych w innych oknach debugera, takich jak okno Wątki procesora GPU i okno obserwatora równoległego .
Toggle Method View icon Przełącz widok metody Przełącza się między widokami stosu wywołań i widokiem metody. Aby uzyskać więcej informacji, zobacz Widok metody.
Auto Scroll to Current icon Automatyczne przewijanie do bieżącej ramki stosu Automatycznie wyrejestruje wykres, tak aby bieżąca ramka stosu był w widoku. Ta funkcja jest przydatna w przypadku zmiany bieżącej ramki stosu z innych okien lub trafienia nowego punktu przerwania w dużych wykresach.
Toggle Zoom icon Przełącz kontrolkę Powiększenia Pokazuje lub ukrywa kontrolkę powiększenia po lewej stronie okna.

Niezależnie od widoczności kontrolki powiększenia, można również powiększać, naciskając klawisze Ctrl i obracając koło myszy lub naciskając klawisze Ctrl+Shift++ , aby powiększyć i Ctrl+Shift+- , aby powiększyć.

Ikony ramki stosu

Następujące ikony zawierają informacje o aktywnych i bieżących ramkach stosu we wszystkich widokach:

Ikona Opis
Yellow arrow Wskazuje bieżącą lokalizację (aktywną ramkę stosu) bieżącego wątku.
Threads icon Wskazuje bieżącą lokalizację (aktywną ramkę stosu) nieobjętego wątku.
Green arrow Wskazuje bieżącą ramkę stosu (bieżący kontekst debugera). Nazwa metody jest pogrubiona wszędzie tam, gdzie się pojawia.

Elementy menu kontekstowego

Poniższe elementy menu skrótów są dostępne po kliknięciu prawym przyciskiem myszy metody w widoku Wątki lub widoku Zadania . Ostatnie sześć elementów jest takich samych jak w oknie Stos wywołań.

Shortcut menu in Parallel Stacks window

Element menu Opis
Flaga Flaguje wybrany element.
Unflag Usuwa opóźnienie wybranego elementu.
Zamrozić Blokuje wybrany element.
Odblokować Rozmraża zaznaczony element.
Przełącz do ramki Tak samo jak odpowiednie polecenie menu w oknie Stos wywołań . Jednak w oknie Stosy równoległe jedna metoda może znajdować się w kilku ramkach. Możesz wybrać odpowiednią ramkę w podmenu dla tego elementu. Jeśli jedna z ramek stosu znajduje się w bieżącym wątku, ta ramka jest domyślnie zaznaczona w podmenu.
Przejdź do zadania lub przejdź do wątku Przełącza się do widoku Zadania lub Wątki i zachowuje tę samą ramkę stosu.
Przejdź do kodu źródłowego Przechodzi do odpowiedniej lokalizacji w oknie kodu źródłowego.
Przejdź do dezasemblacji Przechodzi do odpowiedniej lokalizacji w oknie Dezasemblacji .
Pokaż kod zewnętrzny Pokazuje lub ukrywa kod zewnętrzny.
Wyświetlacz szesnastkowy Przełącza między wyświetlaniem dziesiętnych i szesnastkowym.
Pokaż wątki w źródle Flaguje lokalizację wątku w oknie kodu źródłowego.
Informacje dotyczące załadowania symboli Otwiera okno dialogowe Informacje o ładowaniu symboli .
Ustawienia symboli Otwiera okno dialogowe Ustawienia symboli .

Widok wątków

W widoku Wątki ramka stosu i ścieżka wywołania bieżącego wątku są wyróżnione kolorem niebieskim. Bieżąca lokalizacja wątku jest wyświetlana za pomocą żółtej strzałki.

Aby zmienić bieżącą ramkę stosu, kliknij dwukrotnie inną metodę. Może to również przełączyć bieżący wątek, w zależności od tego, czy wybrana metoda jest częścią bieżącego wątku, czy innego wątku.

Gdy wykres widoku Wątki jest zbyt duży, aby zmieścić się w oknie, w oknie zostanie wyświetlona kontrolka Widok oka ptaka . Możesz przenieść ramkę w kontrolce, aby przejść do różnych części grafu.

Na poniższej ilustracji przedstawiono jeden wątek przechodzący z main do przejścia kodu zarządzanego na natywny. W bieżącej metodzie znajdują się sześć wątków. Jeden kontynuuje tryb Thread.Sleep, a drugi kontynuuje ciąg Console.WriteLine, a następnie do elementu SyncTextWriter.WriteLine.

Threads view in Parallel Stacks window

W poniższej tabeli opisano główne funkcje widoku Wątki :

Wywołanie Nazwa elementu Opis
1 Segment stosu wywołań lub węzeł Zawiera serię metod dla co najmniej jednego wątku. Jeśli ramka nie ma podłączonych linii strzałek, ramka pokazuje całą ścieżkę wywołania wątków.
2 Niebieskie wyróżnienie Wskazuje ścieżkę wywołania bieżącego wątku.
3 Linie strzałek Połącz węzły, aby utworzyć całą ścieżkę wywołania wątków.
4 Nagłówek węzła Przedstawia liczbę procesów i wątków dla węzła.
5 Metoda Reprezentuje jedną lub więcej ramek stosu w tej samej metodzie.
6 Etykietka narzędzia w metodzie Pojawia się po umieszczeniu wskaźnika myszy na metodzie. W widoku Wątki etykietka narzędzia zawiera wszystkie wątki w tabeli podobnej do okna Wątki .

Widok zadań

Jeśli aplikacja używa System.Threading.Tasks.Task obiektów (kodu zarządzanego) lub task_handle obiektów (kodu natywnego) do wyrażania równoległości, możesz użyć widoku Zadania . Widok Zadania pokazuje stosy wywołań zadań zamiast wątków.

W widoku Zadania :

  • Nie są wyświetlane stosy wywołań wątków, które nie uruchamiają zadań.
  • Stosy wywołań wątków, które uruchamiają zadania, są wizualnie przycinane u góry i dołu, aby pokazać najbardziej odpowiednie ramki zadań.
  • Gdy w jednym wątku znajdują się kilka zadań, stosy wywołań tych zadań są wyświetlane w osobnych węzłach.

Aby wyświetlić cały stos wywołań , wróć do widoku Wątki, klikając prawym przyciskiem myszy ramkę stosu i wybierając polecenie Przejdź do wątku.

Poniższa ilustracja przedstawia widok Wątki u góry i odpowiadający mu widok Zadania u dołu.

Threads and Tasks views

Umieść kursor na metodzie, aby wyświetlić etykietkę narzędzia z dodatkowymi informacjami. W widoku Zadania etykietka narzędzia zawiera wszystkie zadania w tabeli podobnej do okna Zadania .

Na poniższej ilustracji przedstawiono etykietkę narzędzia dla metody w widoku Wątki u góry i dla odpowiedniego widoku Zadania u dołu.

Threads and Tasks tooltips

Widok metody

W widoku Wątki lub w widoku Zadania możesz przełączyć wykres w bieżącej metodzie, wybierając ikonę Przełącz widok metody na pasku narzędzi. Widok metody przedstawia błyskawicznie wszystkie metody we wszystkich wątkach, które są wywoływane lub wywoływane przez bieżącą metodę. Poniższa ilustracja przedstawia wygląd tych samych informacji w widoku Wątki po lewej stronie i w widoku metody po prawej stronie.

Threads view and Method View

Jeśli przełączysz się do nowej ramki stosu, ustawisz tę metodę jako bieżącą metodę, a w widoku metody zostaną wyświetlone wszystkie wywołujące i wywoływane dla nowej metody. Może to spowodować, że niektóre wątki pojawią się lub znikną z widoku, w zależności od tego, czy ta metoda pojawia się na ich stosach wywołań. Aby powrócić do widoku stosu wywołań, ponownie wybierz ikonę paska narzędzi Widok metody .

Zobacz też