Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce guide vous montre comment déboguer de manière interactive du code source C# pour un module PowerShell compilé à l’aide de Visual Studio Code (VS Code) et de l’extension C#.
Cet article suppose que vous êtes familiarisé avec le débogueur Visual Studio Code.
Pour une présentation générale du débogueur VS Code, consultez Débogage dans Visual Studio Code.
Pour obtenir des exemples de débogage de modules et de fichiers de script PowerShell, consultez Utilisation de Visual Studio Code pour le débogage et l’édition à distance.
Ce guide suppose que vous avez lu et suivi les instructions du guide Rédaction de modules portables.
Création d’une tâche de construction
Générez automatiquement votre projet avant de lancer une session de débogage. Le fait de regénérer le projet vous permet de déboguer la version la plus récente de votre code.
Configurer une tâche de génération :
Dans la palette de commandes , exécutez la commande Configurer la tâche de génération par défaut.
Exécuter la configuration de la tâche de génération par défaut
Dans la boîte de dialogue Sélectionner une tâche pour configurer, choisissez Créer un fichier tasks.json à partir d’un modèle.
Dans la boîte de dialogue Sélectionner un modèle de tâche, choisissez .NET Core.
Un nouveau fichier tasks.json
est créé s’il n’existe pas encore.
Pour tester votre tâche de compilation :
Dans la palette de commandes, exécutez la commande Run Build Task.
Dans la boîte de dialogue Sélectionner la tâche de génération à exécuter, choisissez build.
Informations sur les fichiers DLL verrouillés
Par défaut, une build réussie n’affiche pas la sortie dans le volet terminal. Si vous voyez une sortie contenant le texte Le fichier de projet n'existe pas, vous devez modifier le fichier tasks.json
. Ajoutez le chemin explicite au projet C# au format suivant : "${workspaceFolder}/myModule"
. Dans cet exemple, myModule
est le nom du dossier du projet. Cette entrée doit suivre l’entrée build
dans la liste args
comme suit :
{
"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"
}
Lors du débogage, votre DLL de module est importée dans la session PowerShell dans le terminal VS Code. La DLL devient verrouillée. Le message suivant s’affiche lorsque vous exécutez la tâche de génération sans fermer la session de terminal :
Could not copy "obj\Debug\netstandard2.0\myModule.dll" to "bin\Debug\netstandard2.0\myModule.dll"`.
Vous devez fermer les sessions de terminal Server avant de procéder à la regénération.
Configuration du débogueur
Pour déboguer l’applet de commande PowerShell, vous devez configurer une configuration de lancement personnalisée. Cette configuration est utilisée pour :
- Générer votre code source
- Démarrer PowerShell avec votre module chargé
- Laissez PowerShell ouvert dans le volet terminal
Lorsque vous appelez votre applet de commande dans la session de terminal, le débogueur s’arrête à tout point d’arrêt défini dans votre code source.
Configuration de launch.json pour PowerShell
Installer l’extension C# pour Visual Studio Code
Dans le volet Débogage, ajoutez une configuration de débogage
Dans la boîte de dialogue
Select environment
, choisissez.NET Core
Le fichier
launch.json
est ouvert dans l’éditeur. Avec votre curseur dans le tableauconfigurations
, vous voyez le sélecteurconfiguration
. Si vous ne voyez pas cette liste, sélectionnez Ajouter une configuration.Pour créer une configuration de débogage par défaut, sélectionnez Lancer l’application console .NET Core:
Modifiez les champs
name
,program
,args
etconsole
comme suit :{ "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" }
Le champ program
est utilisé pour lancer pwsh
afin que l’applet de commande en cours de débogage puisse être exécutée. L’argument -NoExit
empêche la session PowerShell de quitter dès que le module est importé.
Le chemin dans l’argument Import-Module
est le chemin de sortie de génération par défaut, lorsque vous avez suivi le guide Écriture de modules portables. Si vous avez créé un manifeste de module (fichier.psd1
), vous devez utiliser le chemin d’accès à cela à la place. Le séparateur de chemin d’accès /
fonctionne sur Windows, Linux et macOS. Vous devez utiliser le terminal intégré pour exécuter les commandes PowerShell que vous souhaitez déboguer.
Remarque
Si le débogueur ne s’arrête pas à des points d’arrêt, recherchez dans la console de débogage Visual Studio Code une ligne qui indique :
Loaded '/path/to/myModule.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
Si vous voyez cela, ajoutez "justMyCode": false
à votre configuration de lancement (au même niveau que "console": "integratedTerminal"
.
Configuration de launch.json pour Windows PowerShell
Cette configuration de lancement fonctionne pour tester vos applets de commande dans Windows PowerShell (powershell.exe
).
Créez une deuxième configuration de lancement avec les modifications suivantes :
name
doit êtrePowerShell cmdlets: powershell
type
doit êtreclr
program
doit êtrepowershell
Il doit ressembler à ceci :
{ "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" }
Lancement d’une session de débogage
À présent, tout est prêt pour le débogage.
Placez un point d’arrêt dans le code source de l’applet de commande que vous souhaitez déboguer :
Un point d’arrêt s’affiche sous la forme d’un point rouge dans la marge
Vérifiez qu’une configuration d’applets de commande PowerShell adaptée est sélectionnée dans le menu déroulant configuration de la vue Débogage :
Appuyez sur F5 ou cliquez sur le bouton Démarrer le débogage
Basculez vers le volet terminal et appelez votre applet de commande :
L’exécution s’arrête au point d’arrêt :
Vous pouvez parcourir le code source, inspecter les variables et inspecter la pile des appels.
Pour terminer le débogage, cliquez sur Arrêter dans la barre d’outils de débogage ou appuyez sur Maj+F5. L’interpréteur de commandes utilisé pour le débogage se ferme et retire le verrou appliqué au fichier DLL compilé.