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.
Program Visual Studio może debugować rozwiązanie, które ma kilka procesów. Można uruchamiać i przełączać się między procesami, przerywać, kontynuować i przechodzić przez źródło, zatrzymać debugowanie i odłączyć się od poszczególnych procesów.
Rozpoczynanie debugowania przy użyciu wielu procesów
Jeśli więcej niż jeden projekt w rozwiązaniu programu Visual Studio może działać niezależnie, możesz wybrać, który projekt zostanie uruchomiony przez debuger. Bieżący projekt startowy jest wyróżniony pogrubioną czcionką w Eksploratorze rozwiązań.
Aby zmienić projekt startowy, w Eksploratorze rozwiązań kliknij prawym przyciskiem myszy inny projekt i wybierz polecenie Ustaw jako projekt startowy.
Aby rozpocząć debugowanie projektu z Eksploratora rozwiązań bez ustawienia go jako projektu startowego, kliknij projekt prawym przyciskiem myszy i wybierz Debuguj>Uruchom nowe wystąpienie lub Wejdź w nowe wystąpienie.
Aby ustawić projekt startowy lub wiele projektów we właściwościach rozwiązania:
Wybierz rozwiązanie w Eksploratorze rozwiązań , a następnie wybierz ikonę Właściwości na pasku narzędzi lub kliknij rozwiązanie prawym przyciskiem myszy i wybierz polecenie Właściwości.
Na stronie Właściwości wybierz Wspólne właściwości>Projekt startowy.
Wybierz pozycję Bieżący wybór, Pojedynczy projekt startowy i plik projektu lub Wiele projektów startowych.
Jeśli wybierzesz pozycję Wiele projektów startowych, możesz zmienić kolejność uruchamiania i akcję do wykonania dla każdego projektu: Uruchamianie, Uruchamianie bez debugowania lub Brak.
Wybierz pozycję Zastosuj lub OK , aby zastosować i zamknąć okno dialogowe.
Dołącz do procesu
Debuger może również dołączać do aplikacji działających w procesach poza programem Visual Studio, w tym na urządzeniach zdalnych. Po dołączeniu do aplikacji możesz użyć debugera programu Visual Studio. Funkcje debugowania mogą być ograniczone. Zależy to od tego, czy aplikacja została skompilowana przy użyciu informacji debugowania, czy masz dostęp do kodu źródłowego aplikacji i czy kompilator JIT śledzi informacje debugowania.
Aby uzyskać więcej informacji, zobacz Dołączanie do uruchomionych procesów.
Aby dołączyć do uruchomionego procesu:
Po uruchomieniu aplikacji wybierz pozycję Debug>Dołącz do procesu.
W oknie dialogowym Dołączanie do procesu wybierz proces z listy Dostępne procesy , a następnie wybierz pozycję Dołącz.
Uwaga / Notatka
Debuger nie dołącza automatycznie do procesu podrzędnego, który jest uruchamiany przez debugowany proces, nawet jeśli projekt podrzędny znajduje się w tym samym rozwiązaniu. Aby debugować proces podrzędny, dołącz do procesu podrzędnego po jego uruchomieniu lub skonfiguruj Edytor rejestru systemu Windows, aby uruchomić proces podrzędny w nowym wystąpieniu debugera.
Użyj Edytora rejestru, aby automatycznie uruchomić proces w debugerze
Czasami może być konieczne debugowanie kodu uruchamiania aplikacji uruchamianej przez inny proces. Przykłady obejmują usługi i niestandardowe akcje konfiguracji. Możesz uruchomić debuger i automatycznie dołączyć go do aplikacji.
Uruchom Edytor rejestru systemu Windows, uruchamiając regedit.exe.
W Edytorze rejestru przejdź do HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options.
Wybierz folder aplikacji, którą chcesz uruchomić w debugerze.
Jeśli aplikacja nie znajduje się na liście jako folder podrzędny, kliknij prawym przyciskiem myszy pozycję Opcje wykonywania pliku obrazu, wybierz pozycję Nowy>klucz i wpisz nazwę aplikacji. Możesz też kliknąć prawym przyciskiem myszy nowy klucz w drzewie, wybrać polecenie Zmień nazwę, a następnie wprowadzić nazwę aplikacji.
Kliknij prawym przyciskiem myszy nowy klucz w drzewie i wybierz pozycję Nowa>wartość ciągu.
Zmień nazwę nowej wartości z New Value #1 na
debugger.Kliknij prawym przyciskiem myszy debuger i wybierz polecenie Modyfikuj.
W oknie dialogowym Edytowanie ciągu wpisz
vsjitdebugger.exew polu dane wartości, a następnie wybierz OK.
Debugowanie za pomocą wielu procesów
Podczas debugowania aplikacji z kilkoma procesami przerywanie, wykonywanie kroków i kontynuowanie poleceń debugera domyślnie wpływa na wszystkie procesy. Na przykład w przypadku wstrzymania procesu w punkcie przerwania wykonywanie wszystkich innych procesów jest również zawieszone. Możesz zmienić to domyślne zachowanie, aby uzyskać większą kontrolę nad celami poleceń wykonywanych.
Aby zmienić, czy wszystkie procesy są zawieszone, gdy jeden proces ulegnie awarii:
- W okienku Narzędzia (lub Opcje>) rozwiń sekcję Wszystkie ustawienia>Debugowanie>ogólne.
- W oknie dialogowym Narzędzia (lub Opcje debugowania) > rozwiń sekcję Debugowanie>.
- Zaznacz lub wyczyść opcję Przerwij wszystkie procesy, gdy jeden proces się zatrzymuje w polu wyboru.
Break, Step, Continue commands (Przerwanie, krok, kontynuowanie poleceń)
W poniższej tabeli opisano zachowania poleceń debugowania, gdy pole wyboru Przerwij wszystkie procesy po przerwaniu jednego procesu jest zaznaczone lub odznaczone.
| Polecenie | Wybrano | Zaznaczona |
|---|---|---|
| Debug>Wstrzymaj wszystko | Wszystkie procesy się psują. | Wszystkie procesy zawodzą. |
| Debugować>Kontynuować | Wszystkie procesy są wznawiane. | Wszystkie wstrzymane procesy są wznawiane. |
| Debug>Wejdź, Przeskocz lub Wyjdź | Wszystkie procesy działają podczas realizacji bieżących kroków procesu. Następnie wszystkie procesy się zawieszają. |
Bieżące kroki procesu. Wstrzymane procesy są wznawiane. Uruchamianie procesów jest kontynuowane. |
| Debugować>Przejdź do bieżącego procesu, przejdź do bieżącego procesu lub wyjmij bieżący proces | N/A | Bieżące kroki procesu. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
| Punkt przerwania okna źródłowego | Wszystkie procesy zawodzą. | Tylko proces okna źródłowego się psuje. |
| Okno źródłowe Uruchom do kursora Okno źródłowe musi znajdować się w bieżącym procesie. |
Wszystkie procesy działają, podczas gdy proces okna źródłowego działa aż do kursora, a następnie zostaje przerwany. Następnie wszystkie inne procesy zawodzą. |
Proces okna źródłowego jest uruchamiany do kursora. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
| Procesy okna >Przerwij proces | N/A | Wybrane przerwy w procesach. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
| Okno procesów>Kontynuuj proces | N/A | Wybrany proces jest wznawiany. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
Znajdowanie plików źródłowych i symboli (.pdb)
Aby nawigować po kodzie źródłowym procesu, debuger musi mieć dostęp do plików źródłowych i plików symboli. Aby uzyskać więcej informacji, zobacz Określanie symboli (.pdb) i plików źródłowych.
Jeśli nie możesz uzyskać dostępu do plików dla procesu, możesz przejść za pomocą okna Dezasemblacji . Aby uzyskać więcej informacji, zobacz How to: Use the Disassembly window (Instrukcje: używanie okna dezasemblacji).
Przełączanie między procesami
Możesz dołączyć do wielu procesów podczas debugowania, ale tylko jeden proces jest aktywny w debugerze w danym momencie. Aktywny lub bieżący proces można ustawić na pasku narzędzi Lokalizacja debugowania lub w oknie Procesy . Aby przełączać się między procesami, oba procesy muszą być w trybie przerwania.
Aby ustawić bieżący proces na pasku narzędzi Lokalizacja debugowania:
Aby otworzyć pasek narzędzi Lokalizacja debugowania , wybierz pozycję Wyświetl>paski narzędzi>Debuguj lokalizację.
Podczas debugowania na pasku narzędzi Lokalizacja debugowania wybierz proces, który chcesz ustawić jako bieżący proces z listy rozwijanej Proces .
Aby ustawić bieżący proces w oknie Procesy:
Aby otworzyć okno Procesy, podczas debugowania wybierz pozycję Debuguj>procesy>.
W oknie Procesy bieżący proces jest oznaczony żółtą strzałką. Kliknij dwukrotnie proces, który chcesz ustawić jako bieżący proces.
Przełączenie do procesu ustawia go jako bieżący proces na potrzeby debugowania. Okna debugera pokazują stan bieżącego procesu, a polecenia krokowania mają wpływ tylko na bieżący proces.
Zatrzymaj debugowanie z wieloma procesami
Domyślnie po wybraniu pozycji Zatrzymaj debugowanie>Debug debuger kończy działanie lub odłącza się od wszystkich procesów.
Jeśli bieżący proces został uruchomiony w debugerze, proces zostanie zakończony.
Jeśli debuger został dołączony do bieżącego procesu, debuger odłącza się od procesu i opuszcza uruchomiony proces.
Jeśli rozpoczniesz debugowanie procesu z rozwiązania programu Visual Studio, dołącz go do innego procesu, który jest już uruchomiony, a następnie wybierz pozycję Zatrzymaj debugowanie, sesja debugowania zakończy się. Proces, który został uruchomiony w programie Visual Studio, kończy się, podczas gdy proces dołączony do niego działa.
Aby kontrolować sposób, w jaki zatrzymaj debugowanie wpływa na pojedynczy proces, w oknie Procesy kliknij prawym przyciskiem myszy proces, a następnie zaznacz lub wyczyść pole wyboru Odłącz po zatrzymaniu debugowania .
Uwaga / Notatka
Przerwanie wszystkich procesów, gdy jeden proces przerywa działanie debugera, nie ma wpływu na zatrzymywanie, kończenie lub odłączanie od procesów.
Polecenia zatrzymywania, zakończenia i odłączania
W poniższej tabeli opisano zachowania poleceń debuggera zatrzymania, zakończenia i odłączenia w przypadku wielu procesów.
| Polecenie | Opis |
|---|---|
| Debug>Zatrzymaj debugowanie | O ile zachowanie nie zostanie zmienione w oknie Procesy , procesy uruchomione przez debuger zostaną zakończone, a dołączone procesy zostaną odłączone. |
| Debug>Zakończ wszystkie | Wszystkie procesy zostały zakończone. |
| Debug>Odłącz wszystkie | Debuger odłącza się od wszystkich procesów. |
| Okno procesów>Odłącz proces | Debuger odłącza się od wybranego procesu. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
| Okno procesów>Zakończ proces | Wybrany proces został zakończony. Inne procesy zachowują istniejący stan (zawieszone lub uruchomione). |
| Okno Procesy>Odłącz przy zatrzymaniu debugowania | W przypadku wybrania opcji Debug>Zatrzymaj debugowanie odłącza się od wybranego procesu. Jeśli nie zostanie wybrane, Debuguj>Zatrzymaj debugowanie kończy wybrany proces. |