Introduction

Ce didacticiel est destiné aux nouveaux utilisateurs de la Simple Virtual Machine.

Dans ce didacticiel, vous allez exécuter une application Simple Virtual Machine en utilisant le débugueur. L'application vous est donnée.

Le temps de lecture de ce didacticiel est estimé à 15 minutes si le didacticiel numéro 1 a été lu auparavant.

Mise en place

Pour ce didacticiel, l'application utilisée est celle du didacticiel numéro 1. Référez-vous au didacticiel numéro 1 pour la mise en place de celui-ci.

Lancement de l'application en mode debug

Pour lancer la machine virtuelle en mode debug, il suffit de lancer l'application en ajoutant l'option -d suivi d'un numéro de port TCP.

./application.svm -d 8080 5

Si la machine virtuelle ne rend pas la main, c'est que l'invocation a réussi. En effet, comme nous allons le voir bientôt, l'application contient un point d'arrêt. Cela nous permettra de voir la machine en fonctionnement.

Si une erreur est affichée, et que la machine indique qu'elle n'a pas pu lancer le débugueur, testez avec un autre port jusqu'à ce que la machine ne rende pas la main.

Le débugueur

Pour ouvrir le débugueur, utilisez un navigateur web (normalement, Firefox et Chrome sont supportés) sur le même système et dans une nouvelle page ou tab, lancez :

http://localhost:8080

Si vous avez utilisé un autre port, adaptez l'URL. En revanche, la machine n'acceptera pas de connexion depuis un autre système pour cette application.

Ouvrir le débugueur

Lorsque la page s'ouvre, une boite de dialogue attend le "login" :

Le "login" se trouve sur le terminal où a été lancée la machine virtuelle. Il faut copier/coller le login dans la boite de login du débugueur. Sur chaque boite de dialogue, le bouton "?" permet d'ouvrir une aide contextuelle, rappellant ici comment trouver le "login".

Une fois le bon "login" entré dans la boite de login, le débugueur s'ouvre. Dans le cas contraire, l'interface se bloque pour prévenir toute nouvelle tentative, et il faut recharger la page pour recommencer du début la phase d'authentification.

Le menu principal

Lorsque l'interface du débugueur s'ouvre, le menu principal est automatiquement présenté à l'utilisateur :

Test
Main menu
Breakpoints
Machine
Schedulers
Processes
Kernels
Events
Plugins
Windows list

Dans ce menu,

Les points d'arrêt

Dans notre cas, la machine est arrêtée sur un point d'arrêt placé dans le code de l'application. Cliquez sur "Breakpoints" pour ouvrir la liste des points d'arrêt :

Test
Main menu
Breakpoints
Machine
Schedulers
Processes
Kernels
Events
Plugins
Windows list
Breakpoint list
Breakpoint:
At <main:1/0>

Un seul point d'arrêt est ici disponible.

Plusieurs types de points d'arrêt existent. Ici, il s'agit du point d'arrêt le plus simple.

Le contexte d'exécution

Cliquez :

  1. sur ">" pour ouvrir le contexte dans lequel s'est arrêtée la machine,
  2. dans la fenêtre qui vient de s'ouvrir, cliquez sur "Memory" pour ouvrir la mémoire,
  3. dans la même fenêtre, cliquez sur "Processor" pour ouvrir le processeur,
  4. enfin, dans la fenêtre du processeur, cliquez sur "Code" pour ouvrir le code.

En déplaçant un peu les fenêtres, cela donne :

Test
Main menu
Breakpoints
Machine
Schedulers
Processes
Kernels
Events
Plugins
Windows list
Breakpoint list
Breakpoint:
At <main:1/0>
Kernel main - P application
State: D, transmit_interruption
Processor
Memory
Processor - K main - P application
State:
Next instruction: <main:1/1>
Current instruction: <main:1/0>
Code
Current memory: &0*0
Allocated memory:
Defined aliases:
Local interruptions:
Cascaded local interruptions:
Flags:
Cascaded flags:
Return stack:
Global interruptions:
Waiting interruptions:
Memory - K main - P application
AddressTypeValue
&0INT5
AliasPointer
nb&0*1
Address:
Display
Aliases
P
Focus
Back
Clear
Code main - K main - P application
:debug BREAK
:memory INT/i , INT/s
0 -> &i
0 -> &s
:label loop

:shift &i
:shift @&i &s
:goto loop :when @&i IN &0*@&nb
:com.message @&s
Auto-scroll to
Current
with above
Display

Le débugueur est maintenant ouvert, et l'exécution de l'application peut maintenant être observée.

Exécution de l'application

Dans la partie haute de la fenêtre du processeur se trouvent quatre boutons permettant de contrôler l'exécution de l'application.

Utilisez le bouton ">." pour faire avancer l'exécution de l'application pas-à-pas, et pour chaque étape, observez à la fois dans le navigateur et le terminal ce qui change. Pour lancer l'exécution jusqu'à la fin du programme d'un seul coup, il suffira de cliquer une fois sur le bouton ">>" de la fenêtre processeur.

Il est possible qu'un utilisateur découvrant la machine virtuelle ne cerne pas le déroulement de l'application, mais cela n'est pas requis à ce stade de la lecture des didacticiels. Les didacticiels suivants ont pour vocation d'expliquer pas-à-pas tous les concepts visibles dans le débugueur.

Un utilisateur confirmé peut avec le débugueur comprendre en détail ce que fait le code de l'application, et éventuellement le corriger.

Conclusion

Vous venez de voir sur un exemple d'application simple :

Le débugueur a trois objectifs :