Udostępnij za pośrednictwem


Debugowanie wątków i procesów w Visual Studio

Wątki i procesy to pojęcia pokrewne w dziedzinie informatyki.Oba reprezentują sekwencje instrukcji, które muszą być wykonywane w określonej kolejności.Instrukcje w oddzielnych wątkach lub procesach można jednak wykonać równolegle.

Procesy istnieją w systemie operacyjnym i odpowiadają temu, co użytkownicy widzą jako programy lub aplikacje.Wątek istnieje w ramach procesu.Z tego powodu wątki są czasami nazywane procesami lekkimi.Każdy proces składa się z jednego lub więcej wątków.

Istnienie wielu procesów umożliwia komputerowi wykonywanie więcej niż jednego zadania na raz.Istnienie wielu wątków umożliwia procesowi oddzielenie pracy, która ma zostać wykonana równolegle.Na komputerze z komputerów wieloprocesorowych, procesy i wątki można uruchomić na różnych procesorach.Pozwala to na prawdziwe przetwarzanie równoległe.

Doskonałe przetwarzania równoległe nie zawsze jest możliwe.Wątki czasami muszą być synchronizowane.Jeden wątek być może będzie musiał poczekac na wynik z innego wątku, lub jeden wątek wymaga wyłącznego dostępu do zasobu, który używa innego wątku.Problemy z synchronizacją są typową przyczyną błędów w aplikacjach wielowątkowych.Czasami wątki mogą kończyć się, oczekując na zasób, który nigdy nie stanie się dostępny.Skutkuje to warunkiem o nazwie zakleszczenie.

Debuger programu Visual Studio zapewnia zaawansowane, ale łatwe w obsłudze narzędzia do debugowania wątków i procesów.

Narzędzia do debugowania wątków i procesów w programie Visual Studio

Podstawowe narzędzia do pracy z procesami w programie Visual Studio to okno dialogowe Dołączanie do procesu, okno Procesy i pasek narzędzi Lokalizacja debugowania.Podstawowe narzędzia do debugowania wątków to okno Wątki, znaczniki wątków w oknach źródłowych i pasek narzędzi Lokalizacja debugowania.

Podstawowe narzędzia do debugowania aplikacji wielowątkowych to okna Stosy równoległe i Zadania równoległe oraz Równoległa czujka i Wątki GPU.

W następującej tabeli przedstawiono dostępne informacje i czynności, które można wykonywać w każdym z tych miejsc:

Interfejs użytkownika

Dostępne informacje

Akcje, które może przeprowadzać użytkownik

Okno dialogowe Dołącz do procesu

Dostępne procesy, które możesz dołączyć do:

  • Nazwa procesu (.exe)

  • Numer identyfikacyjny ID procesu

  • Tytuł paska menu

  • Typ (Managed v4.0; Managed v2.0, v1.1, v1.0; x86; x64; IA64)

  • Nazwa użytkownika (nazwa konta)

  • Numer sesji

Wybierz proces, do którego chcesz się dołączyć

Wybierz komputer zdalny

Zmień typ transportu dla łączenia się z komputerami zdalnymi

Okno Procesy

Dołączone procesy:

  • Nazwa procesu

  • Numer identyfikacyjny ID procesu

  • Ścieżka do przetwarzania .exe

  • Tytuł paska menu

  • Stan (przerwanie.Uruchamianie)

  • Debugowanie (w trybie macierzystym, zarządzane itd.)

  • Typ transportu (ustawienie domyślne, natywnie bez uwierzytelnienia)

  • Kwalifikator transportu (komputer zdalny)

Narzędzia:

  • Dołącz

  • Odłącz

  • Zakończ

Menu skrótów:

  • Dołącz

  • Odłącz

  • Odłącz po zatrzymaniu debugowania

  • Zakończ

Okno Wątki

Wątki w bieżącym procesie:

  • Identyfikator wątku

  • zarządzany Identyfikator

  • Kategoria (główny wątek, wątek interfejsu, obsługa wywołania procedury zdalnej lub wątek roboczy)

  • Nazwa wątku

  • |Lokalizacja gdy tworzony jest wątek

  • Priorytety

  • Maska koligacji

  • Licznik wstrzymany

  • Nazwa procesu

  • Wskaźnik flagi

  • Wskaźnik wstrzymany

Narzędzia:

  • Wyszukiwanie

  • Stos wywołań wyszukiwania

  • Flaguj tylko mój kod

  • Flagowanie wybranego niestandardowego modułu

  • Grupuj według

  • Kolumny

  • Rozwiń/Zwiń stosy wywołań

  • Rozwiń/Zwiń grupy

  • Zablokuj/Odblokuj wątki

Menu skrótów:

  • Pokazywanie wątków w źródle

  • Przełączanie do wątku

  • Blokowanie uruchomionego wątku

  • Odblokowywanie zablokowanego wątku

  • Flagowanie wątku dla przeprowadzenia dodatkowych badań

  • Usuń flagę wątku

  • Zmień nazwę wątku

  • Pokazywanie i ukrywanie wątków

Inne działania:

  • Wyświetl stos wywołań wątku w DataTip

Okno źródłowe

Wskaźniki wątku na lewym marginesie na oprawę wskazują jeden lub wielu wątków (wyłączone domyślnie, włączone za pomocą menu skrótów w oknie Wątki).

Menu skrótów:

  • Przełączanie do wątku

  • Flagowanie wątku dla przeprowadzenia dodatkowych badań

  • Usuń flagę wątku

Lokalizacja debugowania - Pasek narzędzi

  • Bieżący proces

  • Pokazywanie miniatury aplikacji

  • Wstrzymywanie aplikacji

  • Wznów aplikację

  • Wstrzymywanie i zamykanie aplikacji

  • Bieżący wątek

  • Przełączanie bieżącego stanu flagi wątku

  • Pokazywanie tylko wątków oflagowanych

  • Pokazywanie tylko bieżącego procesu

  • Ramka bieżącego stosu

  • Przełączanie do innego procesu

  • Wstrzymywanie, wznawianie działania lub zamykanie aplikacji

  • Przełączanie do innego wątku w bieżącym procesie

  • Przełączanie do innej ramki stosu w bieżącym wątku

  • Flagowanie bieżących wątków lub usuwanie z nich flagi

  • Pokazywanie tylko wątków oflagowanych

  • Pokazywanie tylko bieżącego procesu

Okno Stosów równoległych

  • Wywołaj stosy dla wielu wątków w jednym oknie.

  • Ramka aktywnego stosu dla każdego wątku.

  • Obiekty wywołujące i wywoływane dla dowolnej metody.

  • Odfiltruj określone wątki

  • Przełączanie do widoku zadań równoległych

  • Flagowanie wątku lub usuwanie z niego flagi

  • Powiększenie

Okno Zadań równoległych

  • Wyświetlanie informacji o obiektach Task, w tym o identyfikatorze zadania, stanie zadania (według harmonogramu, pracy, oczekujące, zakleszczone) i wątku, który jest przydzielony do zadania.

  • Bieżąca lokalizacja w stosie wywołania.

  • Obiekt delegowany przekazany do zadania w czasie jego tworzenia

  • Przełączanie do bieżącego zadania

  • Flagowanie zadania lub usuwanie z niego flagi

  • Blokowanie lub odblokowywanie zadania

OknoRównoległa czujka

  • Kolumna flagi, w której można oznaczyć wątek, na który chcesz zwrócić szczególną uwagę.

  • Kolumna ramki, w której strzałka wskazuje wybraną ramkę.

  • Konfigurowalna kolumna, która może wyświetlać maszynę, proces, fragment, zadanie i wątek.

  • Flagowanie wątku lub usuwanie z niego flagi

  • Pokazuj tylko wątki oflagowane

  • Przełączanie ramek

  • Sortowanie kolumny

  • Grupowanie wątków

  • Blokowanie lub odblokowywanie wątków

  • eksportowanie danych w oknie czujki równoległej

Okno wątków GPU

  • Kolumna flagi, w której można oznaczyć wątek, na który chcesz zwrócić szczególną uwagę.

  • Kolumna aktywnego wątku, w której żółta strzałka wskazuje aktywny wątek.Strzałka wskazuje wątek, w którym wykonanie przerwało pracę debugera.

  • Kolumna Liczba wątków, która wyświetla liczbę wątków w tej samej lokalizacji.

  • Kolumna Wiersz wyświetlająca wiersz kodu, w którym znajduje się każda grupa wątków.

  • Kolumna Adres wyświetlająca adres instrukcji, pod którym znajduje się każda grupa wątków.

  • Kolumna Lokalizacja, która jest lokalizacją w kodzie adresu.

  • Kolumna Stan, która wskazuje, czy wątek jest aktywny, czy zablokowany.

  • Kolumna Kafelek, która zawiera indeks kafelka dla wątków w wierszu.

  • Zmień na inny wątek aktywny

  • Wyświetlanie określonego fragmentu i wątku

  • Wyświetlaj lub ukrywaj kolumnę

  • Sortowanie według kolumny

  • Grupowanie wątków

  • Blokowanie lub odblokowywanie wątków

  • Flagowanie wątku lub usuwanie z niego flagi

  • Pokazuj tylko wątki oflagowane

Zobacz też

Inne zasoby

Dołączanie do uruchomionego procesu za pomocą debugera programu Visual Studio

Debuguj aplikacje wielowątkowe w programie Visual Studio

Debugowanie kodu GPU