Réserver une Démo
Pré. Proc.

Débogage de l'exécution des Statemachines Exécutables

La création de Statemachines Exécutables offre des avantages même après la génération du code. En utilisant l' Analyseur d'Exécution , Enterprise Architect est capable de se connecter au code généré. En conséquence, vous êtes en mesure de déboguer visuellement et de vérifier le comportement correct du code ; exactement le même code généré à partir de vos Statemachines , démontré par la simulation et finalement incorporé dans un système du monde réel.

Débogage d'une Statemachine

Pouvoir déboguer un Statemachine Exécutable offre des avantages supplémentaires, tels que la possibilité de :

  • Interrompre l'exécution de la simulation et de toutes les Statemachines en cours d'exécution
  • Vue l'état brut de chaque instance Statemachine impliquée dans la simulation
  • Vue le code source et Pile d'Appel à tout moment
  • Tracer des informations supplémentaires sur l'état d'exécution grâce au placement de points de trace sur les lignes de code source
  • Contrôler l'exécution grâce à l'utilisation de points d'action et de points d'arrêt (rupture sur erreur, par exemple)
  • Diagnostiquer les changements de comportement, dus aux changements de code ou de modélisation
Si vous avez généré, construit et exécuté un exécuter Statemachine Exécutable avec succès, vous pouvez le déboguer ! Le script Analyzer créé lors du processus de génération est déjà configuré pour fournir le débogage. Pour commencer le débogage, lancez simplement l' Statemachine Exécutable à l'aide du contrôle de Simulation . Cependant, selon la nature du comportement à déboguer, nous définirions probablement d'abord des points d'arrêt.

Interruption de l'exécution lors d'une transition d'état

Comme tout débogueur, nous pouvons utiliser des points d'arrêt pour examiner la Statemachine en cours d'exécution à un point du code. Localisez une classe qui vous intéresse dans le diagramme ou dans la fenêtre Navigateur et appuyez sur F12 pour afficher le code source. Il est facile de localiser le code des transitions d' State à partir des conventions de dénomination utilisées lors de la génération. Si vous souhaitez interrompre une transition particulière, localisez la fonction de transition dans l'éditeur et placez un marqueur de point d'arrêt en cliquant dans la marge de gauche sur une ligne de la fonction. Lorsque vous exécuterez le exécuter Statemachine Exécutable , le débogueur s'arrêtera à cette transition et vous pourrez voir l'état brut des variables pour tous les Statemachines impliqués.

Interruption conditionnelle de l'exécution

Chaque point d'arrêt peut prendre une condition et une instruction de trace. Lorsque le point d'arrêt est rencontré et que la condition est évaluée à True, l'exécution s'arrête. Sinon, l'exécution se poursuivra normalement. Vous composez la condition en utilisant les noms des variables brutes et en les comparant à l'aide des opérandes d'égalité standard : < > = >= <=. Par exemple:

(this.m_nCount > 100) et (this.m_ntype == 1)

Pour ajouter une condition à un point d'arrêt que vous avez défini, cliquez-droit sur le point d'arrêt et sélectionnez ' Propriétés '. En cliquant sur le point d'arrêt tout en appuyant sur la touche Ctrl, les propriétés peuvent être rapidement modifiées.

Traçage auxiliaires de traçage

Il est possible de tracer des informations à partir de la Statemachine elle-même en utilisant la clause TRACE dans, par exemple, un effect . Le débogage fournit également des fonctionnalités de trace appelées Tracepoints. Ce sont simplement des points d'arrêt qui, au lieu de casser, impriment des instructions de trace lorsqu'ils sont rencontrés. La sortie est affichée dans la fenêtre Simulation Control. Ils peuvent être utilisés comme aide au diagnostic pour montrer et prouver la séquence d'événements et l'ordre dans lequel les instances changent d'état.

Visite de la Pile d'Appel

Chaque fois qu'un point d'arrêt est rencontré, la Pile d'Appel est disponible depuis le menu Analyseur. Utilisez-le pour déterminer l'ordre dans lequel l'exécution a lieu.