Skip to content

Simulation et debug

lalBi94 edited this page Nov 9, 2026 · 2 revisions

Simulation et debug

Run live

Run live est le mode par défaut. Un interpréteur coopératif exécute le programme par tranches, sans budget total, et rend la main au pilote à chaque tranche de 400 pas ou à screenPresent.

  • Aucun lancement automatique n’a lieu.
  • Le point d’entrée doit être sans paramètre.
  • Pause/Reprise/Stop agissent sur la session en cours ; Stop réinitialise la session.
  • Le curseur de vitesse va de 1 à 100 et s’applique immédiatement, sans redémarrer le worker.
  • Les entrées des boutons sont appliquées entre deux frames, sans relancer le programme.
  • Les boucles déclarant SP3_LIVE restent continues en live et restent finies en exécution bornée.

Le Run borné reste disponible dans le menu : il précalcule une trace finie avec un budget de pas, utilisée par l’animation, le debug et les contrats.

La simulation et les calculs lourds passent par un Web Worker avec messages d’avancement et annulation immédiate.

Ce que la simulation couvre

  • expressions, déclarations, affectations, appels ;
  • conditions, boucles, retours, tableaux ;
  • classes, constructeurs, new, this, membres public/private ;
  • pointeurs, lambdas, génériques instanciés ;
  • ForEach ;
  • opérations natives ;
  • contrats ;
  • boutons d’entrée onClick(bool) ;
  • widgets Screen/Gauge/ProgressBar/BarChart/Heatmap/LED/RGB LED/XY plot/Oscilloscope.

Elle refuse les diagnostics bloquants et les points d’entrée paramétrés.

Debug

Le debug prépare une trace bornée avant navigation. Il permet :

  • Next : pas suivant ;
  • Back : revenir à l’arrêt précédent ;
  • Finish scope : sortir de la portée courante ;
  • Continue : reprendre jusqu’au prochain point d’arrêt ;
  • Restart : revenir au premier arrêt.

Les points d’arrêt visuels sont locaux à la session et ne sont pas enregistrés dans le workspace.

Mémoire et pointeurs

  • Memory space : code/fonctions, données globales, pile d’appels, adresses illustratives.
  • Pointer graph : cibles des variables et cases, adresses et portées actives.
  • Les valeurs au survol apparaissent sur les déclarations, références et paramètres du point d’arrêt.

Ces vues sont pédagogiques : aucune allocation réelle, aucune persistance.

Exécuter une fonction choisie

Sur une fonction sélectionnée, Run → Run this function… ou Debug this function… ouvre une saisie typée des paramètres. Le résultat affiche la valeur de retour, la sortie et les variables observées. Les entrées invalides sont refusées par le moteur.

Simulation graphique simplifiée

Run → Graphical execution → Run simplified graphical simulation ouvre une fenêtre dédiée :

  • seules les fonctions atteignables sont représentées ;
  • appels directs animés ;
  • pile de fonctions, variables, sortie, statut ;
  • pause/reprise/stop.

Elle est distincte du debug et ne persiste rien.

Widgets pendant Run

  • Screen : images rejouées à 24 fps, boucle sur la période détectée ; une séquence sans cycle peut relancer la simulation pour renouveler les images.
  • Gauge/ProgressBar/LED/RGB LED : états synchronisés par pas ou par image.
  • BarChart : suit les images d’écran ; Heatmap suit uniquement les pas Run/Debug.
  • XY plot/Oscilloscope : échantillonnage des fonctions au pas courant.

Dashboard exporté

Le dashboard HTML autonome exécute le vrai Run live, propose le Run borné et un mode Run autonomous qui rejoue la trace des programmes finis ou lance le live continu des exemples SP3_LIVE. Voir Dashboard exporté.

Limites

  • En live : pas de contrats, de debug, de retour arrière ni de trace complète.
  • En borné : budget de pas et profondeur d’appel bornés ; pas de preuve générale de terminaison.
  • Aucun effet natif, fichier ou réseau dans le programme simulé.
  • Le debug n’édite pas les valeurs mémoire.
  • Les entrées interactives se limitent aux boutons déclarés par le projet.

Clone this wiki locally