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.
W tym przewodniku pokazano, jak interaktywnie debugować kod źródłowy języka C# dla skompilowanego modułu programu PowerShell przy użyciu programu Visual Studio Code (VS Code) i rozszerzenia języka C#.
Zakłada się, że istnieje pewna znajomość debugera programu Visual Studio Code.
Aby zapoznać się z ogólnym wprowadzeniem do debugera programu VS Code, zobacz Debugowanie w programie Visual Studio Code.
Przykłady debugowania plików i modułów skryptów programu PowerShell można znaleźć w sekcji Using Visual Studio Code for remote editing and debugging.
W tym przewodniku przyjęto, że zapoznałeś się z wytycznymi zawartymi w poradniku Pisanie Przenośnych Modułów i je wykonałeś.
Tworzenie zadania kompilacji
Skompiluj projekt automatycznie przed uruchomieniem sesji debugowania. Ponowne kompilowanie zapewnia debugowanie najnowszej wersji kodu.
Konfigurowanie zadania kompilacji:
W palety poleceńuruchom Skonfiguruj domyślne zadanie kompilacji.
W oknie dialogowym Wybierz zadanie do skonfigurowania wybierz pozycję Utwórz plik tasks.json z szablonu.
W oknie dialogowym Wybieranie szablonu zadania wybierz pozycję .NET Core.
Jeśli jeszcze nie istnieje, zostanie utworzony nowy plik tasks.json.
Aby przetestować zadanie kompilacji:
W Command Paletteuruchom polecenie Uruchom zadanie kompilacji.
W oknie dialogowym Wybierz zadanie kompilacji do uruchomienia wybierz pozycję kompilacji.
Informacje o zablokowanych plikach DLL
Domyślnie pomyślna kompilacja nie wyświetla danych wyjściowych w okienku terminalu. Jeśli zobaczysz dane wyjściowe zawierające tekst Project file doesn't exist, należy edytować plik tasks.json. Dołącz jawną ścieżkę do projektu języka C# wyrażonego jako "${workspaceFolder}/myModule". W tym przykładzie myModule jest nazwą folderu projektu. Ten wpis musi być umieszczony po wpisie build na liście args w następujący sposób:
{
"label": "build",
"command": "dotnet",
"type": "shell",
"args": [
"build",
"${workspaceFolder}/myModule",
// Ask dotnet build to generate full paths for file names.
"/property:GenerateFullPaths=true",
// Do not generate summary otherwise it leads to duplicate errors in Problems panel
"/consoleloggerparameters:NoSummary",
],
"group": "build",
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
Podczas debugowania biblioteka DLL modułu jest importowana do sesji programu PowerShell w terminalu programu VS Code. Biblioteka DLL zostaje zablokowana. Podczas uruchamiania zadania kompilacji bez zamykania sesji terminalu wyświetlany jest następujący komunikat:
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Sesje terminalu należy zamknąć przed ponowną kompilacją.
Konfigurowanie debugera
Aby debugować polecenie cmdlet programu PowerShell, należy skonfigurować niestandardową konfigurację uruchamiania. Ta konfiguracja służy do:
- Tworzenie kodu źródłowego
- Uruchamianie programu PowerShell z załadowanym modułem
- Pozostaw program PowerShell otwarty w okienku terminalu
Podczas wywoływania polecenia cmdlet w sesji terminalu debuger zatrzymuje się w dowolnych punktach przerwania ustawionych w kodzie źródłowym.
Konfigurowanie launch.json dla programu PowerShell
Zainstaluj rozszerzenie C# dla programu Visual Studio Code
W okienku Debugowanie dodaj konfigurację debugowania
W oknie dialogowym
Select environmentwybierz pozycję.NET CorePlik
launch.jsonjest otwierany w edytorze. Kiedy kursor znajduje się wewnątrz tablicyconfigurations, pojawia się selektorconfiguration. Jeśli ta lista nie jest widoczna, wybierz Dodaj konfigurację.Aby utworzyć domyślną konfigurację debugowania, wybierz pozycję Uruchom aplikację konsolową platformy .NET Core:
Edytuj pola
name,program,argsiconsolew następujący sposób:{ "name": "PowerShell cmdlets: pwsh", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "pwsh", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Pole program służy do uruchamiania pwsh, aby można było uruchomić debugowane polecenie cmdlet. Argument -NoExit uniemożliwia zakończenie sesji programu PowerShell zaraz po zaimportowaniu modułu.
Ścieżka w argumencie Import-Module jest domyślną ścieżką danych wyjściowych kompilacji, gdy postępujesz zgodnie z przewodnikiem Pisanie modułów przenośnych. Jeśli utworzono manifest modułu (plik.psd1), należy użyć ścieżki do tego pliku. Separator ścieżki / działa w systemach Windows, Linux i macOS. Aby uruchomić polecenia programu PowerShell, które chcesz debugować, należy użyć zintegrowanego terminalu.
Notatka
Jeśli debuger nie zatrzymuje się w żadnym punkcie przerwania, poszukaj w konsoli debugowania programu Visual Studio Code wiersza z informacją:
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Jeśli to zobaczysz, dodaj "justMyCode": false do konfiguracji uruchamiania (na tym samym poziomie co "console": "integratedTerminal".
Konfigurowanie launch.json dla programu Windows PowerShell
Ta konfiguracja uruchamiania działa na potrzeby testowania poleceń cmdlet w programie Windows PowerShell (powershell.exe).
Utwórz drugą konfigurację uruchamiania z następującymi zmianami:
nameto powinno byćPowerShell cmdlets: powershelltypeto powinno byćclrprogramto powinno byćpowershellPowinien wyglądać następująco:
{ "name": "PowerShell cmdlets: powershell", "type": "clr", "request": "launch", "preLaunchTask": "build", "program": "powershell", "args": [ "-NoExit", "-NoProfile", "-Command", "Import-Module ${workspaceFolder}/myModule/bin/Debug/netstandard2.0/myModule.dll", ], "cwd": "${workspaceFolder}", "stopAtEntry": false, "console": "integratedTerminal" }
Uruchamianie sesji debugowania
Teraz wszystko jest gotowe do rozpoczęcia debugowania.
Umieść punkt przerwania w kodzie źródłowym polecenia cmdlet, które chcesz debugować:
Punkt przerwania to czerwona kropka w marginesie
Upewnij się, że odpowiednie polecenia cmdlet programu PowerShell konfiguracji zostały wybrane z menu rozwijanej listy konfiguracji w widoku debugowania:
Naciśnij F5 lub kliknij przycisk Rozpocznij debugowanie
Przełącz się do okienka terminalu i wywołaj swój cmdlet.
Wykonanie zatrzymuje się w punkcie przerwania:
Możesz przejść przez kod źródłowy, sprawdzić zmienne i sprawdzić stos wywołań.
Aby zakończyć debugowanie, kliknij przycisk Zatrzymaj na pasku narzędzi debugowania lub naciśnij Shift+F5. Powłoka używana do debugowania kończy działanie i zwalnia blokadę skompilowanego pliku DLL.