Pourquoi un debugger dédié ?

Déboguer une séquence JSON avec des print() dans le code Python sous-jacent est fastidieux et non reproductible. Le Debugger V3 d'AutomationSequence V8 apporte une expérience de débogage visuelle directement dans l'interface de séquence : breakpoints, inspection des variables en temps réel, évaluation d'expressions et reprise à partir d'une action précise.

Un breakpoint dans AutomationSequence V8 est identique à un breakpoint dans un IDE Python — il suspend l'exécution à un point précis et expose l'état complet de la séquence (variables, contexte, historique des actions précédentes).

Interface du Debugger V3

Le Debugger V3 s'active via le bouton 🐛 dans la toolbar ou par Ctrl+Shift+D. Il ajoute trois panneaux à l'interface principale :

  • Gouttière de breakpoints — à gauche de chaque action, un cercle cliquable pour poser/retirer un breakpoint.
  • Variable Inspector — panneau latéral droit affichant toutes les variables courantes avec leur type et valeur.
  • Console d'évaluation — zone de saisie pour évaluer des expressions Python dans le contexte de la séquence suspendue.

Breakpoints simples

# Dans la séquence JSON — breakpoint déclaratif
{
  "type": "oracle_query",
  "query": "SELECT * FROM sejours WHERE mois = :m",
  "bind": {"m": "{{date_YYYYMM}}"},
  "output_var": "sejours",
  "_breakpoint": true   // ← pose un breakpoint sur cette action
}

Quand la séquence atteint ce breakpoint, elle se suspend. La toolbar affiche les contrôles de débogage : ▶ Continuer, ⏭ Passer à l'action suivante, ⏹ Arrêter.

Breakpoints conditionnels

Un breakpoint conditionnel ne suspend l'exécution que si l'expression est vraie — utile pour déboguer un problème qui n'apparaît que pour certaines valeurs :

{
  "type": "file_write_csv",
  "data": "{{sejours}}",
  "_breakpoint": {
    "condition": "len(sejours) == 0",
    "message":   "Aucun séjour pour ce mois — vérifier la requête"
  }
}
// Se suspend uniquement si la requête renvoie 0 lignes

Les conditions peuvent utiliser n'importe quelle variable de la séquence et n'importe quelle expression Python :

# Exemples de conditions de breakpoint
"len({{data}}) > 1000"          # plus de 1000 lignes
"'ERROR' in str({{last_result}})" # résultat contient ERROR
"{{elapsed_ms}} > 5000"          # action trop lente
"{{retry_count}} >= 2"           # deuxième retry ou plus

Variable Inspector

Quand la séquence est suspendue, le Variable Inspector affiche toutes les variables avec leur type, taille et valeur (tronquée pour les grands datasets) :

# Affichage du Variable Inspector (panneau V3)
┌─────────────────────────────────────────────────────┐
│ VARIABLES                                 [Filtrer] │
├──────────────────┬───────┬─────────────────────────┤
│ Nom              │ Type  │ Valeur                  │
├──────────────────┼───────┼─────────────────────────┤
│ date_YYYYMM      │ str   │ "202610"                │
│ sejours          │ list  │ [1420 éléments]         │
│ oracle_conn      │ conn  │ <cx_Oracle.Connection>  │
│ last_exit_code   │ int   │ 0                       │
│ elapsed_ms       │ float │ 142.3                   │
└──────────────────┴───────┴─────────────────────────┘

Watch List

La Watch List permet de suivre des expressions spécifiques qui se recalculent à chaque étape :

# Expressions ajoutées à la Watch List
len(sejours)                    # → 1420
sejours[0]['service'] if sejours else None  # → 'Cardiologie'
sum(s['duree'] for s in sejours)           # → 8742

Démarrer depuis l'action N

Une des fonctionnalités les plus utiles : reprendre l'exécution depuis une action spécifique en chargeant un état de contexte sauvegardé :

# Sauvegarder l'état du contexte à l'action 5
# Clic droit sur l'action → "Sauvegarder le contexte ici"
# → fichier context_action5.asctx (chiffré)

# Reprendre depuis l'action 5 sans tout réexécuter
automation-sequence run ma_sequence.json   --start-from 5   --load-context context_action5.asctx

Particulièrement utile pour les séquences longues (30+ actions) où les premières actions font des appels réseau ou des requêtes lourdes : on sauvegarde le contexte après ces étapes coûteuses et on débogue les étapes suivantes sans les réexécuter.

Conclusion

Le Debugger V3 transforme le débogage de séquences complexes : breakpoints conditionnels pour les cas edge, Variable Inspector pour l'inspection d'état, Watch List pour le suivi d'expressions, et reprise depuis l'action N pour économiser du temps sur les séquences longues. La courbe d'apprentissage est nulle si vous avez déjà utilisé un debugger IDE classique.

⚙️
PRODUIT LIÉ
AutomationSequence V8.0
← Article précédent Article suivant →