Wyświetlanie wątków i zadań w oknie stosów równoległych (C#, Visual Basic, C++)
Dotyczy: Visual Studio Visual Studio
dla komputerów Mac
Visual Studio Code
Okno Stosy równoległe jest przydatne do debugowania aplikacji wielowątków. Ma kilka widoków:
Widok wątków zawiera informacje o stosie wywołań dla wszystkich wątków w aplikacji. Możesz nawigować między wątkami i ramkami stosu w tych wątkach.
Widok zadań zawiera informacje o stosie wywołań skoncentrowanych na zadaniach.
- W kodzie zarządzanym widok Zadania przedstawia stosy wywołań System.Threading.Tasks.Task obiektów.
- W kodzie natywnym widok Zadania przedstawia stosy wywołań grup zadań, algorytmy równoległe, agentów asynchronicznych i lekkich zadań.
Widok metody przestawia stos wywołań w wybranej metodzie.
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:
Ikona | Kontrola | Opis |
---|---|---|
![]() |
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. |
![]() |
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 . |
![]() |
Przełącz widok metody | Przełącza się między widokami stosu wywołań i widokiem metody. Aby uzyskać więcej informacji, zobacz Widok metody. |
![]() |
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. |
![]() |
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 |
---|---|
![]() |
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) bieżącego wątku. |
![]() |
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) nieobjętego wątku. |
![]() |
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ń.
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.
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.
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.
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.
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 .