src/dbg/
├── commands/
│ ├── breakpoint/ # Commandes liées aux points d'arrêt
│ ├── control/ # Commandes de contrôle d'exécution
│ ├── info/ # Commandes d'information
│ ├── object/ # Commandes d'inspection d'objets
│ └── interfaces/ # Interfaces communes
└── core/ # Noyau du debugger
L'utilisation du pattern Command a été choisie pour :
- Découpler l'invocation des commandes de leur implémentation
- Faciliter l'ajout de nouvelles commandes sans modifier le code existant
- Permettre une meilleure organisation et maintenance du code
Chaque commande :
- Implémente l'interface
DebugCommand - Est autonome et responsable d'une seule fonctionnalité
- Gère ses propres erreurs et retours
L'implémentation des points d'arrêt utilise deux approches distinctes :
-
Points d'arrêt standards (
BreakCommand)- Création via
createBreakpointRequest() - Activation permanente jusqu'à suppression explicite
- Persistance à travers les itérations et appels multiples
- Création via
-
Points d'arrêt uniques (
BreakOnceCommand)- Utilisation d'une propriété "type" pour l'identification
- Suppression automatique après le premier déclenchement
- Nettoyage des ressources post-utilisation
La gestion des événements suit une approche structurée :
- Récupération des événements via la queue d'événements de la VM
- Filtrage par type d'événement
- Traitement spécifique selon le type
- Nettoyage des ressources si nécessaire
Points clés :
- Gestion explicite du contrôle d'exécution
- Nettoyage systématique des requêtes obsolètes
- Reprise de l'exécution uniquement sur commande utilisateur
Plusieurs mécanismes sont en place :
- Suppression des anciennes requêtes de step avant d'en créer de nouvelles
- Désactivation des points d'arrêt uniques après utilisation
- Nettoyage des ressources lors de la déconnexion de la VM
Standardisation des retours pour toutes les commandes :
- Messages d'erreur explicites en français
- Confirmation des actions effectuées
- Retour des objets pertinents pour chaînage possible