Déboguer son application

Visual Studio permet de déboguer directement son application via les sources générés en C++. Même si le débogage en C++ n'est pas toujours évident, il est toujours plus efficace qu'une flopée de BoiteMessage.

Passer en mode debug

Le principe est simple :

  1. Copier son répertoire oxydev\systeme en oxydev\systeme_debug

  2. Ouvrir la solution de votre application et choisir la configuration "Debug". Si cette configuration n'existe pas, il suffit de la créer une via le Gestionnaire de configurations, avec le nom "Debug" et les paramètres par défaut.

  3. Régénérer la solution

  4. Vérifier que le projet de démarrage n'est pas OxygenePch. Si c'est le cas, sélectionner un autre projet (dll de menu par exemple) et faire clic droit puis "Définir comme projet de démarrage".

  5. Appuyer sur F5 pour lancer Oxygène++ en mode debug.

  6. Déboguer !

 

Comment déboguer une méthode de mon objet ?

Admettons que vous souhaitez déboguer la méthode DEBUT_FICHE de l'objet GESTION de la dll GCPCLI.

  1. Dans le projet, allez dans le dossier "Sources C++" et ouvrez gestion.cpp

  2. Pour se positionner dans la bonne fonction : en haut du document, choisissez la classe du nom de l'objet

    ainsi que la fonction du nom de la méthode

  3. Déposez un point d'arrêt en faisant clic droit sur la ligne puis "Insérer un point d'arrêt" ou en cliquant sur la marge de gauche.

  4. Lancez Oxygène en démarrant le déboguage (F5).

  5. Lorsque la méthode en question sera lancée, Visual Studio mettra Oxygène en pause sur le point d'arrêt. (Si ce n'est pas le cas, essayez de régénérer le projet, voire la solution.) Faîtes du pas à pas (F10) ou reprenez l'exécution normale avec F5.

Outils pour le débogage

Les principales fenêtres-outils de VS :

  • Points d'arrêt : lister et gérer les points d'arrêt

  • Pile d'appels : liste chronologique des appels aux fonctions des dll

  • Espion : permet de consulter le contenu des variables

 

Les types de données Oxygène++ sont complexes et leur contenu pas facilement accessible. En attendant une meilleure gestion du mode debug pour Oxygène, on peut toujours utiliser les espions de contenu de VS qui sont très bien faits : positionnez le curseur au dessus d'une variable et une bulle indiquera le contenu courant de la variable. Ci dessous, une capture montrant le contenu de v_old_adresse_livraison qui est la chaîne "1".

 

 

Pour trouver le contenu d'un champ, cela est plus difficile car il faut naviguer dans les membres. Ci-dessous, un exemple pour trouver la valeur chaîne du champ MONNAIE_CAPITAL_IDENT qui est "EUR" :

 

 

Malheureusement, les variables de type Date ne sont pas directement consultables car leur valeur est numérique (nombre de jours depuis la naissance du Christ).

 

Remarque : Dans les sources C++, les noms des variables sont préfixés et convertis en minuscules. (Voir Intégration C++ in line).