Le mot Débogueur provient du terme anglais bug (insecte ou punaise) qui se "traduit" en français par bogue. Une bogue dans une méthode est une erreur que vous désirez éliminer. Lorsqu’une erreur se produit dans votre code, ou lorsque vous désirez contrôler l’exécution de vos méthodes, vous utilisez le débogueur. Un débogueur vous permet de trouver les bogues en exécutant pas à pas vos méthodes et en fournissant toutes les informations nécessaires. Ce procédé s’appelle le modeTrace.
Cliquer sur le bouton Déboguer dans la fenêtre d'exécution de méthode.
Utiliser la combinaison Alt+Maj+clic droit (sous Windows) ou Control+Option+Commande+clic (sous Mac OS) pendant l’exécution d'une méthode, puis choisir le process à tracer dans le pop up menu qui apparaît :
Cliquer sur le bouton Tracer en mode Développement, lorsqu'un process est sélectionné dans la page Process de l'Explorateur d'exécution.
Créer ou modifier un point d’arrêt dans la fenêtre d'édition d'une méthode, ou dans les pages Point d'arrêt et Arrêt sur commande de l'Explorateur d'exécution.
Note : Lorsque vous tracez un process en cours d’exécution, la fenêtre du débogueur s’affiche instantanément. Si vous tracez un process qui n’est pas en cours d'exécution (process endormi, en attente d’événement, etc...), le débogueur “enregistre” la requête et n’apparaîtra qu’au moment où le process aura repris l’exécution du code.
Note : Seuls le Super_Utilisateur et les utilisateurs du groupe possédant les privilèges d’accès au développement peuvent tracer des méthodes.
Voici la fenêtre du débogueur (local) :
Voici la fenêtre du débogueur (distant) :
Vous pouvez déplacer la fenêtre du débogueur et/ou redimensionner toutes les zones internes de la fenêtre comme vous le souhaitez. L’affichage ultérieur d’une nouvelle fenêtre du débogueur reprend la configuration (taille et position de la fenêtre, emplacement des lignes de division et contenu de la zone d’évaluation des expressions) de la dernière fenêtre affichée dans la même session.
4D est un environnement multitâche. Dans le cas de plusieurs process s’exécutant simultanément, vous pouvez tracer chacun d’entre eux de manière indépendante. Chaque process peut avoir sa propre fenêtre de débogueur.
La fenêtre du Débogueur est généralement affichée sur la machine sur laquelle le code est exécuté.
Avec une application monoposte, elle est toujours affichée sur la machine d'application en cours d'exécution.
Avec une application client/serveur, elle est affichée sur le 4D distant pour le code éxécuté localement, et par défaut sur la machine serveur pour le code exéuté sur le serveur (par exemple une méthode avec l'option Exécuter sur serveur). Si le serveur est exécuté en mode headless, aucune fenêtre de débogage ne peut être affichée sur le serveur.
Cependant, dans les applications client/serveur, vous pouvez déléguer à un 4D distant spécifique l'affichage du débogueur pour le code exécuté sur le serveur. Ceci est particulièrement utile pour les applications serveur exécutées en mode headless. Pour cela, sur un 4D distant connecté au serveur, sélectionnez la commande Attacher le débogueur distant dans le menu Exécuter :
Vous pouvez également sélectionner l'option Attacher le débogueur distant au démarrage si vous souhaitez déboguer automatiquement le code serveur sur le 4D distant.
Notes :
Le débogueur doit avoir été préalablement "détaché" du serveur.
La barre d’outils de contrôle d’exécution, située en haut de la fenêtre du débogueur, comporte neuf boutons. Voici leur description ainsi que leurs raccourcis clavier associés :
Arrêt du mode Trace et reprise du cours normal de l’exécution de la méthode.
Note : La combinaison Maj+F5 ou Maj+clic sur le bouton Reprendre exécution provoque la reprise de l’exécution avec désactivation de tous les appels à TRACE suivants dans le process courant.
La ligne courante de la méthode (indiquée par la flèche jaune — cette flèche s’appelle le compteur de programme) est exécutée et le débogueur passe à la ligne suivante. Le bouton Exécuter pas à pas ne passe pas dans les sous-routines et les fonctions. Il reste au niveau de la méthode que vous êtes en train de tracer. Si vous voulez également tracer les appels aux sous-routines et aux fonctions, utilisez le bouton Pas à pas détaillé.
Dans le débogage distant, lors de l'exécution de la dernière ligne de la méthode, si la méthode est exécutée sur le serveur, la méthode parente est appelée. Si la méthode parente est exécutée du côté distant, le bouton agit de la même manière que le bouton Reprendre exécution.
Lors de l’exécution d’une ligne qui appelle une autre méthode (sous-routine ou fonction), ce bouton provoque l’affichage de la méthode appelée dans la fenêtre du débogueur, et permet au développeur de passer pas à pas dans cette méthode. La nouvelle méthode devient la méthode courante (en haut) dans la sous-fenêtre Fenêtre de chaîne d'appel de la fenêtre du débogueur. Lors de l’exécution d’une ligne qui n’appelle pas une autre méthode, ce bouton se comporte comme le bouton Exécuter pas à pas.
Dans le débogage distant, lors de l'exécution de la dernière ligne de la méthode, si la méthode est exécutée sur le serveur, la méthode parente est appelée. Si la méthode parente est exécutée du côté distant, le bouton agit de la même manière que le bouton Reprendre exécution.
Si vous tracez des sous-routines et des fonctions, cliquer sur ce bouton vous permet d'exécuter l’intégralité de la méthode qui est en train d'être tracée, et de revenir à la méthode appelante. La fenêtre du débogueur retourne à la méthode précédente dans la chaîne d’appel. Si la méthode courante est la dernière méthode de la chaîne d’appel, la fenêtre du débogueur se referme.
Dans le débogage distant, lors de l'exécution de la dernière ligne de la méthode, si la méthode est exécutée sur le serveur, la méthode parente est appelée. Si la méthode parente est exécutée du côté distant, le bouton agit de la même manière que le bouton Reprendre exécution.
Lors de l’exécution d’une ligne qui crée un nouveau process (par exemple qui appelle la commande New process) ce bouton ouvre une nouvelle fenêtre du débogueur qui vous permet de tracer la méthode de gestion du process que vous venez de créer. Lors de l’exécution d’une ligne qui ne crée pas de nouveau process, ce bouton se comporte comme le bouton Exécuter pas à pas.
La méthode s’arrête et vous retournez là où vous étiez avant son exécution. Si vous étiez en train de tracer une méthode formulaire ou une méthode objet s’exécutant en réponse à un événement, elle s’arrête et vous retournez au formulaire. Si vous traciez une méthode s’exécutant à partir du mode Application, vous retournez à ce mode.
La méthode s’arrête comme lorsque vous cliquez sur Stopper exécution. De plus, 4D affiche dans la fenêtre de l’éditeur de méthodes la méthode qui s’exécutait au moment où vous avez cliqué sur le bouton.
Conseil : Utilisez ce bouton lorsque vous connaissez les modifications à apporter à votre code, et le moment où elles doivent être effectuées pour pouvoir poursuivre le test de vos méthodes. Une fois vos modifications effectuées, ré-exécutez la méthode.
Ce bouton se comporte comme le bouton Stopper et éditer, à la différence près qu'il n’annule pas l’exécution en cours. L’exécution de la méthode est simplement suspendue à l'instant du clic sur le bouton. 4D affiche dans la fenêtre de l’éditeur de méthodes la méthode qui s’exécutait au moment où vous avez cliqué sur le bouton Editer méthode.
Important : Vous pouvez modifier cette méthode, mais ces modifications n’apparaîtront pas, ou ne s’exécuteront pas dans l’instance de la méthode tracée dans la fenêtre du débogueur. Ce n'est qu'une fois que la méthode aura été stoppée ou entièrement exécutée que les modifications pourront apparaître. En d’autres termes, il faut recharger la méthode pour que les modifications soient prises en compte.
Conseil : Utilisez ce bouton lorsque vous connaissez les modifications à apporter à votre code et lorsqu’elles n’interfèrent pas avec le reste du code qui doit être exécuté ou tracé.
Astuce : Les méthodes objet sont rechargées pour chaque événement. Si vous tracez une méthode objet (par exemple en réponse à un clic sur un bouton) vous n’avez pas besoin de quitter le formulaire. Vous pouvez modifier la méthode objet, sauvegarder les modifications, puis retourner au formulaire et tester à nouveau. Pour tracer/modifier les méthodes formulaire, il faut sortir du formulaire puis le réouvrir pour recharger la méthode correspondante. L'astuce est donc la suivante : lorsque vous effectuez le débogage complet d’un formulaire, placez le code que vous déboguez dans une méthode projet que vous utiliserez comme sous-routine à l’intérieur de la méthode formulaire. De cette manière, vous pouvez rester dans le formulaire, tracer, modifier et tester à nouveau votre formulaire car la sous-routine sera rechargée chaque fois qu’elle sera appelée par la méthode formulaire.
Ce bouton permet de sauvegarder la configuration courante de la fenêtre du débogueur (taille et position de la fenêtre, emplacement des lignes de division et contenu de la zone d’évaluation des expressions). Elle sera alors utilisée par défaut à chaque ouverture de la base. Ces paramétrages sont stockés dans le fichier de structure de la base.
Point d’arrêt atteint : vous avez rencontré un point d’arrêt.
Interruption demandée par l’utilisateur : vous avez activé Alt+Maj+clic droit (sous Windows) ou Control+Option+Commande+clic (sous Mac OS) ou encore cliqué sur le bouton Trace dans la page Process de l'Explorateur d'exécution.
Détection d’un appel à : Nom de la commande : Un appel à une commande 4D qui doit être interceptée est sur le point d’être exécuté.
Pas à pas nouveau process : Vous avez cliqué sur le bouton Pas à pas nouveau process et ce message est affiché par la fenêtre du débogueur ouverte pour le process qui vient d'être créé.
Les trois premières fenêtres affichent des listes hiérarchiques montrant l’information pertinente au débogage. La quatrième, la Fenêtre d'évaluation des méthodes, affiche le code source de la méthode tracée. Chaque fenêtre a un rôle précis pour vous assister dans le processus de débogage. Avec la souris, vous pouvez redimensionner la fenêtre du débogueur, ainsi que chaque sous-fenêtre. En outre, les trois premières sous-fenêtres sont séparées par une ligne pointillée dans le sens de la hauteur : vous pouvez redimensionner à votre convenance les colonnes à l’intérieur de chaque sous-fenêtre.