retour vers le sommaire du cours
debug - fichier MAP
- exemple debug00
(source, map, debug)
debug01 - debug03 - debug04
L'outil debug fourni avec les systèmes d'exploitation Microsoft permet de voir comment se déroule l'exécution d'un programme. Nous utiliserons des programmes Pascal simples pour découvrir ce fonctionnement (à télécharger ici).
Aide en ligne de debug
DEBUG [[lecteur:][chem]fichier [param]]
[lecteur:][chem]fichier Programme ou fichier à tester. param Paramètres à passer au fichier lors de son chargement.Après avoir lancé Debug, tapez ? pour afficher une liste des commandes.
assemble (assembler)
A [adresse] compare (comparer) C plage adresse dump (lister) D [plage] enter (entrer) E adresse [liste] fill (remplir) F Plage liste go (exécuter) G [=adresse] [adresses] hex (hexadécimal) H valeur1 valeur2 input (entrer depuis port) I port load (charger) L [adresse] [lecteur] [secteur] [nbre] move (déplacer) M plage adresse name (désigner) N [nchemin] [listearg] output (envoyer sur port) O port val proceed (avancer) P [=adresse] [nbre] quit (quitter) Q register (registre) R [registre] search (rechercher) S plage liste trace (tracer) T [=adresse] [valeur] unassemble (désassembler) U [plage] write (écrire) W [adresse] [lecteur] [secteur] [nbre] allocate expanded memory (allouer EMS) XA [#pages] deallocate expanded memory (désallouer EMS) XD [desc] map expanded memory pages (affecter) XM [pageL] [pageP] [desc] display expanded memory status (état EMS) XS |
Fichiers MAP générés par Turbo Pascal
Pour comprendre l'organisation du programme exécutable, il est nécessaire de savoir comment ont été organisées les informations (données, traitements) lors de la compilation. Le fichier MAP est là pour cela. Pour le faire générer par le compilateur Turbo Pascal, il faut activer l'option Map file detailed dans le menu Options/Linker. Il ne faut pas oublier de demander une compilation sur disque ! (menu Compile/Destination disk). En compilant le programme source debug00.pas, nous obtenons donc un fichier debug00.exe (programme exécutable) et un fichier debug00.map (fichier map).
01 program debug00;
02
03 begin
04 end.
Start Stop
Length Name Class
00000H 00016H 00017H
debug00 CODE
|
||
Address Publics by Value 0000:0000 @ |
Address Publics by Value |
Address Publics by Value |
Line numbers for debug00(DEBUG00.PAS) segment debug00 3 0000:0000 4 0000:000F Program entry point at 0000:0000 |
C:\>debug debug00.exe
-u
1608:0000 9A00000A16 CALL 160A:0000
1608:0005 55 PUSH BP
1608:0006 89E5 MOV BP,SP
1608:0008 31C0 XOR AX,AX
1608:000A 9ACD020A16 CALL 160A:02CD
1608:000F 5D POP BP
1608:0010 31C0 XOR AX,AX
1608:0012 9A16010A16 CALL 160A:0116
-r
AX=0000 BX=0000 CX=0B6A DX=0000 SP=4000 BP=0000 SI=0000 DI=0000
DS=15F8 ES=15F8 SS=168E CS=1608 IP=0000 NV UP EI PL NZ NA PO NC
1608:0000 9A00000A16 CALL 160A:0000