Débogage
Qu'est-ce que le débogage
Le débogage est un processus au cours duquel vous pouvez détecter et corriger les erreurs présentes dans votre code.
Tout programme .NET peut s'exécuter dans deux modes différents.
- Mode Release - généralement utilisé dans les environnements de production. Lorsque vous l'utilisez, .NET active diverses optimisations du compilateur et du compilateur juste-à-temps qui améliorent la vitesse d'exécution de votre code et réduisent son empreinte mémoire.
- Mode Debug - principalement utilisé dans les environnements de développement et de test. Toutes les optimisations sont désactivées et vous pouvez attacher des débogueurs .NET à votre code.
Lorsque vous travaillez avec des bibliothèques et des applications .NET, le débogage implique ce qui suit :
- Exécuter votre code en mode debug
- Attacher un débogueur .NET à votre code
- Définir des points d'arrêt de code pour indiquer si le flux d'exécution doit s'arrêter
- Suivre le flux d'exécution du code avec des pauses planifiées aux points d'arrêt
Définir les débogueurs .NET
Les débogueurs .NET sont des programmes qui utilisent des API d'exécution. Ces API, à leur tour, permettent de contrôler le flux d'exécution des processus .NET. En d'autres termes, ils peuvent mettre en pause l'exécution à des points d'arrêt donnés et stocker divers états (y compris les valeurs que les variables individuelles contiennent pendant ces états).
Créer des algorithmes en mode debug
Comme nous l'avons vu ci-dessus, déboguer un cBot ou un indicateur implique de créer cette extension en mode debug. Par défaut, lorsque vous cliquez sur le bouton Build dans l'interface utilisateur de cTrader, votre extension s'exécute en mode release pour activer les optimisations de code.
Pour créer votre cBot ou indicateur en mode debug, vous devez utiliser soit le CLI .NET, soit des IDE externes tels que Visual Studio. Dans cette documentation, nous montrons le processus de débogage tel qu'il se produit dans Visual Studio. Cependant, ce processus peut également être reproduit dans d'autres IDE avec des modifications mineures.
Installez la dernière version de Visual Studio sur votre machine et effectuez les actions suivantes :
-
Ouvrez votre indicateur ou cBot dans Visual Studio en sélectionnant l'option Modifier dans Visual Studio dans le menu déroulant Modifier dans... en haut de la fenêtre de l'éditeur de code.
-
Dans le menu au-dessus de l'éditeur de code de Visual Studio, sélectionnez Debug.

- Créez votre cBot ou indicateur en mode debug.
Déboguer un cBot ou un indicateur
Maintenant que vous savez comment créer un cBot ou un indicateur en mode debug, nous allons nous concentrer sur la façon de le déboguer réellement.
-
Modifiez les droits d'accès de votre indicateur ou cBot sur
FullAccess. -
Attachez un débogueur au processus en cours d'exécution de votre indicateur ou cBot. Vous pouvez le faire en appelant la méthode
System.Diagnostics.Debugger.Launch().
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |
Remarque
La méthode System.Diagnostics.Debugger.Launch() doit être appelée dans la méthode OnStart() (pour un cBot) ou la méthode Initialize() (pour un indicateur).
- Exécutez une nouvelle instance de votre cBot ou indicateur. Si une instance est déjà en cours d'exécution, sélectionnez-la dans l'interface utilisateur. Vous devriez être redirigé vers Visual Studio avec une invite pour sélectionner un débogueur. Faites-le et cliquez sur OK.

Une fois le débogage lancé, vous pouvez définir des points d'arrêt, (parcourir) les lignes de code et voir la pile d'appels et les valeurs des variables.
Pour un guide complet sur la façon de déboguer dans Visual Studio, consultez la documentation de débogage de Visual Studio.
Utiliser la directive de préprocesseur DEBUG
Vous pouvez également utiliser la directive de préprocesseur DEBUG dans votre code cBot ou indicateur pour contrôler le flux d'exécution.
La directive #if DEBUG est utile lorsque vous souhaitez exécuter uniquement un bloc ou une ligne de code en mode débogage.
1 2 3 4 5 6 7 8 9 | |
Dans l'exemple ci-dessus, la ligne de code "Not Debugging" ne sera pas compilée si vous construisez votre cBot en mode débogage.
Des informations supplémentaires sur les directives de processeur C# sont disponibles dans cette documentation.