Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób debugowania skryptów na komputerze lokalnym przy użyciu funkcji debugowania wizualnego zintegrowanego środowiska skryptów programu Windows PowerShell (ISE).
Jak zarządzać punktami przerwania
Punkt przerwania jest wyznaczonym miejscem w skrycie, w którym chcesz wstrzymać operację, aby umożliwić sprawdzenie bieżącego stanu zmiennych i środowiska, w którym jest uruchomiony skrypt. Po wstrzymaniu skryptu przez punkt przerwania możesz uruchomić polecenia w okienku konsoli, aby sprawdzić stan skryptu. Możesz wyświetlać zmienne wyjściowe lub uruchamiać inne polecenia. Można nawet zmodyfikować wartość dowolnych zmiennych widocznych w kontekście aktualnie uruchomionego skryptu. Po zbadaniu tego, co chcesz zobaczyć, możesz wznowić działanie skryptu.
W środowisku debugowania programu Windows PowerShell można ustawić trzy typy punktów przerwania:
Punkt przerwania wiersza. Skrypt wstrzymuje się, gdy zostanie osiągnięty wyznaczony wiersz podczas działania skryptu
Zmienny punkt przerwania. Skrypt jest wstrzymywany za każdym razem, gdy wartość wyznaczonej zmiennej ulegnie zmianie.
Punkt przerwania polecenia. Skrypt jest wstrzymywany za każdym razem, gdy ma zostać uruchomione wyznaczone polecenie, podczas działania skryptu. Może zawierać parametry umożliwiające filtrowanie punktu przerwania, aby obejmował tylko żądaną operację. Polecenie może być również funkcją, którą utworzyłeś.
Z nich w środowisku debugowania środowiska Windows PowerShell ISE można ustawić tylko punkty przerwania wiersza za pomocą menu lub skrótów klawiaturowych. Pozostałe dwa typy punktów przerwania można ustawić, ale są ustawione w okienku konsoli przy użyciu polecenia cmdlet Set-PSBreakpoint . W tej sekcji opisano, jak można wykonywać zadania debugowania w środowisku Windows PowerShell ISE przy użyciu menu, gdzie są dostępne, i wykonywać szerszy zakres poleceń z okienka konsoli przy użyciu skryptów.
Aby ustawić punkt przerwania
Punkt przerwania można ustawić w skrycie dopiero po jego zapisaniu. Kliknij prawym przyciskiem myszy wiersz, w którym chcesz ustawić punkt przerwania wiersza, a następnie kliknij polecenie Przełącz punkt przerwania. Możesz też kliknąć wiersz, w którym chcesz ustawić punkt przerwania wiersza, a następnie naciśnij F9 lub w menu Debuguj kliknij pozycję Przełącz punkt przerwania.
Poniższy skrypt jest przykładem sposobu ustawiania zmiennego punktu przerwania z okienka konsoli przy użyciu polecenia cmdlet Set-PSBreakpoint .
# This command sets a breakpoint on the Server variable in the Sample.ps1 script.
Set-PSBreakpoint -Script sample.ps1 -Variable Server
Wyświetlanie listy wszystkich punktów przerwania
Wyświetla wszystkie punkty przerwania w bieżącej sesji programu Windows PowerShell.
W menu Debugowanie kliknij pozycję Punkty przerwania listy. Poniższy skrypt to przykład sposobu wyświetlania listy wszystkich punktów przerwania w okienku konsoli przy użyciu polecenia cmdlet Get-PSBreakpoint .
# This command lists all breakpoints in the current session.
Get-PSBreakpoint
Usuwanie punktu przerwania
Usunięcie punktu przerwania usuwa go.
Jeśli uważasz, że możesz chcieć go użyć ponownie później, rozważ wyłączenie punktu przerwania zamiast tego. Kliknij prawym przyciskiem myszy wiersz, w którym chcesz usunąć punkt przerwania, a następnie kliknij ToggleBreakpoint. Możesz też kliknąć wiersz, w którym chcesz usunąć punkt przerwania, a następnie w menu Debugowanie kliknij pozycję Przełącz punkt przerwania. Poniższy skrypt to przykład usuwania punktu przerwania z określonym identyfikatorem z okienka konsoli przy użyciu polecenia cmdlet Remove-PSBreakpoint .
# This command deletes the breakpoint with breakpoint ID 2.
Remove-PSBreakpoint -Id 2
Usuń wszystkie punkty przerwania
Aby usunąć wszystkie punkty przerwania zdefiniowane w bieżącej sesji, w menu Debugowanie kliknij pozycję Usuń wszystkie punkty przerwania.
Poniższy skrypt to przykład usuwania wszystkich punktów przerwania z okienka konsoli przy użyciu polecenia cmdlet Remove-PSBreakpoint .
# This command deletes all of the breakpoints in the current session.
Get-PSBreakpoint | Remove-PSBreakpoint
Wyłączanie punktu przerwania
Wyłączenie punktu przerwania nie powoduje jego usunięcia. Wyłącza ją, dopóki nie zostanie włączona. Aby wyłączyć określony punkt przerwania wiersza, kliknij prawym przyciskiem myszy wiersz, w którym chcesz wyłączyć punkt przerwania, a następnie kliknij polecenie Wyłącz punkt przerwania.
Możesz też kliknąć wiersz, w którym chcesz wyłączyć punkt przerwania, a następnie naciśnij F9 lub w menu Debuguj kliknij pozycję Wyłącz punkt przerwania. Poniższy skrypt jest przykładem sposobu usuwania punktu przerwania z określonym identyfikatorem z okienka konsoli przy użyciu polecenia cmdlet Disable-PSBreakpoint .
# This command disables the breakpoint with breakpoint ID 0.
Disable-PSBreakpoint -Id 0
Wyłącz wszystkie punkty przerwania
Wyłączenie punktu przerwania nie powoduje jego usunięcia; wyłącza go, aż zostanie włączony. Aby wyłączyć wszystkie punkty przerwania w bieżącej sesji, w menu Debugowanie kliknij pozycję Wyłącz wszystkie punkty przerwania. Poniższy skrypt to przykład wyłączania wszystkich punktów przerwania w okienku konsoli przy użyciu polecenia cmdlet Disable-PSBreakpoint .
# This command disables all breakpoints in the current session.
# You can abbreviate this command as: "gbp | dbp".
Get-PSBreakpoint | Disable-PSBreakpoint
Włącz punkt przerwania
Aby włączyć określony punkt przerwania, kliknij prawym przyciskiem myszy wiersz, w którym chcesz włączyć punkt przerwania, a następnie kliknij przycisk Włącz punkt przerwania. Możesz też kliknąć wiersz, w którym chcesz włączyć punkt przerwania, a następnie naciśnij F9 lub w menu Debuguj kliknij pozycję Włącz punkt przerwania. Poniższy skrypt to przykład sposobu włączania określonych punktów przerwania w okienku konsoli przy użyciu polecenia cmdlet Enable-PSBreakpoint .
# This command enables breakpoints with breakpoint IDs 0, 1, and 5.
Enable-PSBreakpoint -Id 0, 1, 5
Włącz wszystkie punkty przerwania
Aby włączyć wszystkie punkty przerwania zdefiniowane w bieżącej sesji, w menu Debugowanie kliknij pozycję Włącz wszystkie punkty przerwania. Poniższy skrypt to przykład, jak można włączyć wszystkie punkty przerwania w panelu konsoli przy użyciu polecenia cmdlet Enable-PSBreakpoint.
# This command enables all breakpoints in the current session.
# You can abbreviate the command by using their aliases: "gbp | ebp".
Get-PSBreakpoint | Enable-PSBreakpoint
Jak zarządzać sesją debugowania
Przed rozpoczęciem debugowania należy ustawić co najmniej jeden punkt przerwania. Nie można ustawić punktu przerwania, chyba że skrypt, który chcesz debugować, zostanie zapisany. Aby uzyskać wskazówki dotyczące ustawiania punktu przerwania, zobacz Jak zarządzać punktami przerwania lub Set-PSBreakpoint. Po rozpoczęciu debugowania nie można edytować skryptu, dopóki nie przestaniesz debugować. Skrypt, który ma co najmniej jeden zestaw punktów przerwania, jest automatycznie zapisywany przed jego uruchomieniem.
Aby rozpocząć debugowanie
Naciśnij F5 lub na pasku narzędzi kliknij ikonę Uruchom skrypt lub w menu Debuguj kliknij pozycję Uruchom/Kontynuuj. Skrypt jest uruchamiany do momentu napotkania pierwszego punktu przerwania. Wstrzymuje tam operację i wyróżnia linię, na której została wstrzymana.
Aby kontynuować debugowanie
Naciśnij F5 lub na pasku narzędzi kliknij ikonę Uruchom skrypt lub w menu Debuguj kliknij polecenie Uruchom/Kontynuuj lub w okienku konsoli wpisz C
, a następnie naciśnij ENTER. Spowoduje to kontynuowanie działania skryptu do następnego punktu przerwania lub na końcu skryptu, jeśli nie napotkano dalszych punktów przerwania.
Aby wyświetlić stos wywołań
Stos wywołań wyświetla bieżące miejsce wykonywania w skrypcie. Jeśli skrypt jest uruchomiony w funkcji, która została wywołana przez inną funkcję, jest ona reprezentowana w wyświetlaczu przez dodatkowe wiersze w danych wyjściowych. Najniższy wiersz wyświetla oryginalny skrypt oraz linie w nim, w której została wywołana funkcja. Pl-PL: Następny wiersz pokazuje tę funkcję oraz wiersz, w którym mogła zostać wywołana inna funkcja. W górnym wierszu jest wyświetlany bieżący kontekst bieżącego wiersza, w którym ustawiono punkt przerwania.
Podczas wstrzymania, aby wyświetlić bieżący stos wywołań, naciśnij CTRL+SHIFT+D lub w menu Debuguj kliknij pozycję Wyświetl stos wywołań lub w okienku konsoli wpisz K
, a następnie naciśnij ENTER.
Aby zatrzymać debugowanie
Naciśnij SHIFT+F5 lub w menu Debugowanie kliknij pozycję Zatrzymaj debuger lub w okienku konsoli wpisz Q
, a następnie naciśnij ENTER.
Jak przejść nad, wejść do i wyjść z podczas debugowania
Krok to proces uruchamiania jednej instrukcji naraz. Możesz zatrzymać się w wierszu kodu i sprawdzić wartości zmiennych i stanu systemu. W poniższej tabeli opisano typowe zadania debugowania, takie jak przechodzenie nad, wchodzenie do i wychodzenie z.
Zadanie debugowania | Opis | Jak to zrobić w programie PowerShell ISE |
---|---|---|
Wejdź do | Wykonuje bieżącą instrukcję, a następnie zatrzymuje się na następnej instrukcji. Jeśli bieżąca instrukcja jest funkcją lub wywołaniem skryptu, debuger wykonuje kroki do tej funkcji lub skryptu, w przeciwnym razie zatrzymuje się w następnej instrukcji. | Naciśnij F11 lub w menu Debuguj kliknij pozycję Krok do lub w okienku konsoli wpisz S i naciśnij ENTER. |
Krok po | Wykonuje bieżącą instrukcję, a następnie zatrzymuje się na następnej instrukcji. Jeśli bieżąca instrukcja jest wywołaniem funkcji lub skryptu, debuger wykonuje całą funkcję lub skrypt i zatrzymuje się na następnej instrukcji po wywołaniu funkcji. | Naciśnij F10 lub w menu Debuguj kliknij pozycję Krok do kroku lub w okienku konsoli wpisz V i naciśnij ENTER. |
Wyjdź | Wychodzi z bieżącej funkcji do poziomu wyżej, jeśli funkcja jest zagnieżdżona. Jeśli w treści głównej, skrypt jest wykonywany do końca albo do następnego punktu przerwania. Pominięte instrukcje są wykonywane, ale nie są śledzone krok po kroku. | Naciśnij SHIFT+F11 lub w menu Debuguj kliknij pozycję Wyjście lub w okienku konsoli wpisz O i naciśnij ENTER. |
kontynuuj | Kontynuuje wykonywanie do końca lub do następnego punktu przerwania. Pominięte funkcje i wywołania są wykonywane, ale nie są śledzone krok po kroku. | Naciśnij F5 lub w menu Debuguj kliknij pozycję Uruchom/Kontynuuj lub w okienku konsoli wpisz C i naciśnij ENTER. |
Jak wyświetlić wartości zmiennych podczas debugowania
Bieżące wartości zmiennych można wyświetlić w skrycie podczas przechodzenia przez kod.
Aby wyświetlić wartości zmiennych standardowych
Użyj jednej z następujących metod:
W oknie skryptu umieść wskaźnik myszy na zmiennej, aby wyświetlić jej wartość jako podpowiedź.
W okienku konsoli wpisz nazwę zmiennej i naciśnij ENTER.
Wszystkie okienka w środowisku ISE są zawsze w tym samym zakresie. W związku z tym podczas debugowania skryptu polecenia wpisywane w okienku konsoli są wykonywane w zakresie skryptu. Dzięki temu można użyć konsoli, aby znaleźć wartości zmiennych i wywoływać funkcje zdefiniowane tylko w skrypcie.
Aby wyświetlić wartości zmiennych automatycznych
Możesz użyć poprzedniej metody, aby wyświetlić wartość prawie wszystkich zmiennych podczas debugowania skryptu. Jednak te metody nie działają dla następujących zmiennych automatycznych.
$_
$input
$MyInvocation
$PSBoundParameters
$args
Jeśli spróbujesz wyświetlić wartość dowolnej z tych zmiennych, uzyskasz wartość tej zmiennej w potoku wewnętrznym używanym przez debuger, a nie wartość zmiennej w skrypsie. Można to obejść dla kilku zmiennych ($_
, $input
, $MyInvocation
, $PSBoundParameters
i $args
) przy użyciu następującej metody:
W skryscie przypisz wartość zmiennej automatycznej do nowej zmiennej.
Wyświetl wartość nowej zmiennej, umieszczając wskaźnik myszy na nowej zmiennej w okienku skryptu lub wpisując nową zmienną w okienku konsoli.
Aby na przykład wyświetlić wartość $MyInvocation
zmiennej, w skryscie przypisz wartość do nowej zmiennej, takiej jak $scriptName
, a następnie umieść kursor na zmiennej lub wpisz zmienną $scriptName
, aby wyświetlić jej wartość.
# In C:\ps-test\MyScript.ps1
$scriptName = $MyInvocation.PSCommandPath
# In the Console Pane:
.\MyScript.ps1
$scriptName
C:\ps-test\MyScript.ps1
Zobacz też
Eksplorowanie środowiska Windows PowerShell ISE