Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Okno Parallel Stacks jest przydatne do debugowania aplikacji wielowątkowych. Ma kilka widoków:
- Widok wątków pokazuje 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ń pokazuje informacje o stosie wywołań skoncentrowanych na zadaniach.
- W przypadku aplikacji .NET korzystających ze wzorca asynchronicznego/await widok Zadania jest najbardziej przydatny do debugowania. Aby zapoznać się z samouczkiem krok po kroku, zobacz Debugowanie aplikacji asynchronicznych.
- W przypadku aplikacji korzystających z Biblioteki Równoległej Zadań (TPL), ale nie korzystających z wzorca async/await, lub dla aplikacji C++ korzystających z Środowiska Uruchomieniowego Współbieżności, widok Wątki w oknie Stosy Równoległe jest najprzydatniejszym narzędziem do debugowania.
-
widok Zadań pokazuje informacje o stosie wywołań skoncentrowanych na zadaniach.
- W przypadku aplikacji .NET korzystających ze wzorca asynchronicznego/await widok Zadania jest najbardziej przydatny do debugowania.
- W przypadku aplikacji korzystających z Biblioteki Równoległej Zadań (TPL), ale nie korzystających z wzorca async/await, lub dla aplikacji C++ korzystających z Środowiska Uruchomieniowego Współbieżności, widok Wątki w oknie Stosy Równoległe jest najprzydatniejszym narzędziem do debugowania.
- Widok metody obraca stos wywołań wokół wybranej metody.
Użyj okna stosów równoległych
Aby otworzyć okno Parallel Stacks, musisz być w sesji debugowania. Wybierz pozycję Debug>Windows Parallel Stacks>.
Kontrolki paska narzędzi
Okno
| Ikona | Kontrola | Opis |
|---|---|---|
pole kombi ![]() |
kombinowane pole Wątki/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 GPU oraz okno Parallel Watch. |
|
Przełącz widok metody | Przełącza się między widokami stosu wywołań i widokiem metody . Aby uzyskać więcej informacji, zobacz Method View. |
|
Automatyczne przewijanie do bieżącej ramki stosu | Automatycznie przewija wykres, aby bieżąca ramka stosu była widoczna. Ta funkcja jest przydatna w przypadku zmiany bieżącej ramki stosu z innych okien lub gdy napotkasz nowy punkt przerwania w dużych grafach. |
ikona przełączania powiększenia ![]() |
Przełącz kontrolkę Powiększenia | Wyświetla lub ukrywa kontrolkę powiększania po lewej stronie okna. Niezależnie od widoczności kontrolki powiększenia, można także powiększać, naciskając Ctrl i obracając kółko myszy, lub naciskając Ctrl+Shift++, aby powiększyć obraz, oraz Ctrl+Shift+-, aby pomniejszyć obraz. |
| Ikona | Kontrola | Opis |
|---|---|---|
pole kombi ![]() |
kombinowane pole Wątki/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. |
ikona filtru ![]() |
Filtr Kontrola | Pokazuje stosy wywołań tylko dla określonego zestawu wątków, które cię interesują. |
|
Pokaż tylko oflagowane | Pokazuje stosy wywołań tylko dla wątków oflagowanych w innych oknach debugera, takich jak okno wątki GPU oraz okno Parallel Watch. |
|
Przełącz widok metody | Przełącza się między widokami stosu wywołań i widokiem metody . Aby uzyskać więcej informacji, zobacz Method View. |
|
Automatyczne przewijanie do bieżącej ramki stosu | Automatycznie przewija wykres, aby bieżąca ramka stosu była widoczna. Ta funkcja jest przydatna w przypadku zmiany bieżącej ramki stosu z innych okien lub gdy napotkasz nowy punkt przerwania w dużych grafach. |
ikona przełączania powiększenia ![]() |
Przełącz kontrolkę Powiększenia | Wyświetla lub ukrywa kontrolkę powiększania po lewej stronie okna. Niezależnie od widoczności kontrolki powiększenia, można także powiększać, naciskając Ctrl i obracając kółko myszy, lub naciskając Ctrl+Shift++, aby powiększyć obraz, oraz Ctrl+Shift+-, aby pomniejszyć obraz. |
ikona wyszukiwania ![]() |
Kontrolka wyszukiwania | Dzięki tej funkcji można łatwo przeszukiwać ramki stosu, a następnie używać strzałek do nawigowania między tymi wynikami. |
|
Zapisz kontrolkę | Umożliwia zapisywanie/eksportowanie zawartości z okna stosu równoległego jako obrazu. |
|
Pokaż kontrolę kodu zewnętrznego | Za pomocą tej funkcji można wyświetlać/ukrywać stosy z zewnętrznego kodu/bibliotek. |
ikona podsumowania ![]() |
Podsumowywanie stosów wywołań | Począwszy od programu Visual Studio 2022 w wersji 17.13 (wersja zapoznawcza 4), możesz wybrać opcję Podsumuj po zainstalowaniu i aktywowaniu Copilot. Ten przycisk otwiera okno czatu copilot, wstępnie załadowane z odpowiednim kontekstem wątku, umożliwiające eksplorowanie szczegółów, w tym stanów wątków, wywołań funkcji i sugerowanych poprawek. |
Ikony ramki stosu
Następujące ikony dostarczają informacji o aktywnych i obecnych ramkach stosu we wszystkich widokach:
| Ikona | Opis |
|---|---|
|
|
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) bieżącego wątku. |
| ikona wątków |
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) dla nieaktywnych wątków. |
|
|
Wskazuje bieżącą ramkę stosu (bieżący kontekst debugera). Nazwa metody jest pogrubiona za każdym razem, gdy się pojawia. |
| Ikona | Opis |
|---|---|
|
|
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) bieżącego wątku. |
| ikona wątków |
Wskazuje bieżącą lokalizację (aktywną ramkę stosu) wątku nieaktywnego. |
|
|
Wskazuje bieżącą ramkę stosu (bieżący kontekst debugera). Nazwa metody jest pogrubiona za każdym razem, gdy się pojawia. |
|
|
(.NET) Wskazuje, że bieżąca ramka stosu ma ostrzeżenie o stanie krytycznym, takim jak Zakleszczenie. |
|
|
(.NET) Wskazuje zakleszczonego węzła. |
|
|
(.NET) Wskazuje, że bieżąca ramka stosu zawiera dodatkowe informacje, takie jak oczekiwanie na blokadę, oczekiwanie na blokadę, własność itp. |
|
|
(.NET) Wskazuje, że bieżące zadanie jest w stanie zablokowanym/oczekiwania itp. |
| stan |
Wskazuje aktualnie uruchomione zadanie. |
Elementy menu kontekstowego
Poniższe elementy menu kontekstowego są dostępne po kliknięciu prawym przyciskiem myszy na metodzie w widoku wątków albo w widoku zadań. Ostatnich sześć elementów jest takich samych jak w oknie stosu wywołań .
| Pozycja menu | Opis |
|---|---|
| Flaga | Flaguje wybrany element. |
| Usuń oznaczenie | Usuwa oznaczenie z wybranego elementu. |
| zamrożenie | Blokuje wybrany element. |
| Odwilż | Rozmraża wybrany element. |
| Przełącz do ramki | Tak samo jak odpowiednie polecenie menu w oknie stosu wywołań |
| Przejdź do zadania lub Przejdź do wątku | Przełącza widok na Task lub Threads i utrzymuje podświetloną tę samą ramkę stosu. |
| przejdź do kodu źródłowego | Przechodzi do odpowiedniej lokalizacji w oknie kodu źródłowego. |
| Przejdź do rozbiórki | Przechodzi do odpowiedniej lokalizacji w oknie dezasemblacji |
| Pokaż kodu zewnętrznego | Wyświetla lub ukrywa kod zewnętrzny. |
| |
Przełącza między wyświetlaniem dziesiętnym i szesnastkowym. |
| Pokaż wątki w źródle | Flaguje lokalizację wątku w oknie kodu źródłowego. |
| Informacje o załadowaniu symboli | Otwiera okno dialogowe Informacje o ładowaniu symboli. |
| ustawienia symboli | Otwiera okno dialogowe Ustawienia symboli. |
| Pozycja menu | Opis |
|---|---|
| Kopiuj | Skopiuj wybrany element. |
| zaznacz wszystkie ramki poniżej | Wybiera wszystkie ramki pod wybranym stosem. |
| Flaga | Flaguje wybrany element. |
| Usuń oznaczenie | Usuwa oznaczenie z wybranego elementu. |
| zamrożenie | Blokuje wybrany element. |
| Odwilż | Rozmraża wybrany element. |
| Przełącz do ramki | Tak samo jak odpowiednie polecenie menu w oknie stosu wywołań |
| Przejdź do zadania lub Przejdź do wątku | Przełącza widok na Task lub Threads i utrzymuje podświetloną tę samą ramkę stosu. |
| przejdź do kodu źródłowego | Przechodzi do odpowiedniej lokalizacji w oknie kodu źródłowego. |
| Przejdź do rozbiórki | Przechodzi do odpowiedniej lokalizacji w oknie dezasemblacji |
| Pokaż kodu zewnętrznego | Wyświetla lub ukrywa kod zewnętrzny. |
| |
Przełącza między wyświetlaniem dziesiętnym i szesnastkowym. |
| Pokaż wątki w źródle | Flaguje lokalizację wątku w oknie kodu źródłowego. |
| Informacje o załadowaniu symboli | Otwiera okno dialogowe Informacje o ładowaniu symboli. |
| ustawienia symboli | Otwiera okno dialogowe Ustawienia symboli. |
Widok wątków
W widoku wątków ramka stosu i ścieżka wywołania bieżącego wątku są zaznaczone na niebiesko. 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ątków jest zbyt duży, aby zmieścić się w oknie, w oknie pojawi się kontrolka widoku z lotu ptaka . Możesz przenieść ramkę w kontrolce, aby przejść do różnych części grafu.
Poniższa ilustracja przedstawia Główny wątek w przechodzeniu z kodu zarządzanego do natywnego. W bieżącej metodzie znajdują się pięć wątków. Cztery wątki kontynuują wykonywanie w kontekście metody S.C, podczas gdy jeden wątek roboczy przechodzi w przejściu z kodu zarządzanego do natywnego, ustawiając nazwę na wątku roboczym.
W poniższej tabeli opisano główne funkcje widoku wątków :
| Objaśnienie | Nazwa elementu | Opis |
|---|---|---|
| 1 | Segment stosu wywołań lub węzeł | Zawiera serię metod dla jednego lub więcej wątków. Jeśli ramka nie ma podłączonych linii strzałek, pokazuje całą ścieżkę wywołania dla wątku lub 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 dla wątku (wątków). |
| 4 | Nagłówek węzła | Przedstawia liczbę procesów/wątków, nazwę wątku i identyfikator wątku 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 podpowiedź pokazuje wszystkie wątki w tabeli podobnej do okna Wątki. |
| 7 | Opis wątku | Wygenerowany przez sztuczną inteligencję opis wątku. Począwszy od programu Visual Studio 2022 w wersji 17.13 (wersja zapoznawcza 1), ten opis jest obecny, gdy Copilot jest zainstalowany i aktywowany. |
Uzyskiwanie pomocy dotyczącej sztucznej inteligencji
Jeśli masz rozwiązanie Copilot, możesz uzyskać pomoc dotyczącą sztucznej inteligencji w widoku Wątki z opisami wątków wygenerowanymi przez sztuczną inteligencję i za pomocą przycisku Generuj szczegółowe informacje . Użyj Screenshot of Generate Insights button.szczegółowych informacji). Aby wchodzić w interakcje z widocznymi danymi wątku. W tym scenariuszu Copilot zna już kontekst pytania, więc nie musisz podawać kontekstu na czacie. Aby uzyskać więcej informacji, zobacz Debugowanie za pomocą narzędzia Copilot.
Aby włączyć lub wyłączyć opisy podsumowań wątków, otwórz panel Narzędzia>Opcje i rozwiń sekcję Wszystkie ustawienia>GitHub>Copilot>Debuger i diagnostyka. Zaznacz lub wyczyść pole wyboru Włącz podsumowanie sztucznej inteligencji w oknie stosów równoległych .
Aby włączyć lub wyłączyć opisy podsumowań wątków, otwórz okno dialogowe Opcje narzędzi> i rozwiń sekcjęGitHub>Copilot. W kategorii Debuger i diagnostyka zaznacz lub wyczyść pole wyboru Włącz podsumowanie sztucznej inteligencji w oknie Stosy równoległe .
Na poniższej ilustracji przedstawiono jeden wątek przechodzący z Main do przejścia z kodu zarządzanego do kodu natywnego. W bieżącej metodzie znajdują się sześć wątków. Dwa wątki przechodzą do stanu uśpienia dzięki Thread.Sleep, dwa kontynuują wykonywanie Console.WriteLine, a bieżący wątek kontynuuje działanie z SyncTextWriter.WriteLine.
W poniższej tabeli opisano główne funkcje widoku wątków :
| Objaśnienie | Nazwa elementu | Opis |
|---|---|---|
| 1 | Segment stosu wywołań lub węzeł | Zawiera serię metod dla jednego lub więcej wątków. Jeśli ramka nie ma podłączonych linii strzałek, pokazuje całą ścieżkę wywołania dla wątku lub 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 dla wątku (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 podpowiedź pokazuje wszystkie wątki w tabeli podobnej do okna Wątki. |
Widok zadań
W przypadku aplikacji .NET korzystających ze wzorca asynchronicznego/await widok Zadania jest najbardziej przydatny do debugowania. Aby zapoznać się z samouczkiem krok po kroku, zobacz Debugowanie aplikacji asynchronicznych.
W widoku Zadania można wykonywać następujące czynności:
- Wyświetlanie wizualizacji stosu wywołań dla aplikacji korzystających ze wzorca async/await.
- Zidentyfikuj kod asynchroniczny, który ma zostać uruchomiony, ale nie jest jeszcze uruchomiony.
Na poniższej ilustracji pokazano widok Wątki u góry i odpowiedni widok Zadania u dołu.
Najedź kursorem na metodę, aby wyświetlić podpowiedź z dodatkowymi informacjami. W widoku zadań , podpowiedź wyświetla wszystkie zadania w tabeli podobnej do okna zadań .
Na poniższej ilustracji przedstawiono etykietkę narzędzia dla metody w widoku wątków u góry oraz dla odpowiedniego widoku zadań u dołu.
Widok metody
W widoku Wątki lub Zadania widoku można przełączyć wykres w bieżącej metodzie, wybierając ikonę Przełącz widok metody na pasku narzędzi.
Widok metody od razu pokazuje wszystkie metody we wszystkich wątkach, które są wywoływane przez bieżącą metodę lub ją wywołują. Na poniższej ilustracji przedstawiono wygląd tych samych informacji w widoku
Jeśli przełączysz się do nowej ramki stosu, ustawisz tę metodę jako bieżącą metodę, a Widok metody wyświetli wszystkie wywołania i wywołania dla nowej metody. Ten scenariusz może 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 metod.
Samouczek wideo dotyczący debugowania wątków i zadań za pomocą stosów równoległych
W tych samouczkach wideo pokazano, jak używać widoków Wątki i Zadania okna Stosy równoległe w programie Visual Studio 2022 do debugowania wielowątkowych aplikacji.
- zadania debugowania za pomocą okna stosów równoległych
- Debugowanie wątków za pomocą okna Stosy równoległe






