Sunteți pe pagina 1din 3

Limbaje 

de asamblare – laborator 7 

Turbo Debugger 

Se întâmplă deseori ca un program să nu conțină erori sintactice și să se compileze


(asambleze) corect, dar să nu facă ce ar trebui. Cu alte cuvinte să conțină un software bug.
Pentru a detecta și rezolva astfel de probleme se folosesc programe numite depanator
(debugger). Acestea permit rularea pas cu pas a programului, puncte de întrerupere
(breakpoints), inspectarea variabilelor etc. Mediile de dezvoltare IDE (integrated development
environment) conțin de obicei un debugger integrat, însă și în acest caz este nevoie de obicei
de o compilare specială pentru a putea folosi debuggerul. Motivul este simplu: programele
compliate în mod normal nu conțin codul sursă sau informații care să lege codul mașină de
codul sursă așa încât să se determine de unde vine o anumită instrucțiune cod mașină. De
exemplu Microsoft Visual C++ are la orice proiect două ținte: Release (fără informații de
depanare) și Debug (cu info de depanare), și pentru a rula pas cu pas este nevoie de a doua.
Programele cu informații de depanare sunt mai lente și mult mai mari decât variantele fără.
Pentru a include informații de depanare în executabilele create cu TASM/TLINK
trebuie adăugate opțiuni pe linia de comandă a celor două: tasm.exe cu /zi și tlink.exe cu /v.
Dacă vrem să le folosim împreună într-un script putem copia ASM.BAT în de ex. ASMD.BAT și
edita astfel:
@echo off
c:\borlandc\bin\tasm.exe /zi %1
if errorlevel 1 goto err
c:\borlandc\bin\tlink.exe /v %1
if errorlevel 1 goto err

echo OK, run program with: %1


echo or debug with: TD %1
goto quit

:err
echo Assembler error!
:quit
del %1.MAP >NUL
del %1.OBJ >NUL
Pentru a observa diferența vom folosi cel mai simplu program pe care îl avem deja,
acela stil Hello World. Rulăm assembler-ul pe el fără opțiuni de depanare, apoi TD HELLO.
Program has no symbol table. Adică nu avem informații de depanare. Turbo Debugger
ne afișează o fereastră CPU unde vedem codul mașină, regiștrii, flagurile și o porțiune din
segmentele de date și stivă (DS și SS), dar nici un simbol care să ne arate ceva despre codul
sursă. La un program gen Hello asta nu este așa o problemă fiindcă este extrem de simplu, dar
la programe mai complexe este.
Alt-X este comanda de ieșire din TD. Mai reținem și Ctrl-F10, de fapt o comandă a
DOSBox pentru a elibera mouse-ul dacă a fost capturat. Dacă folosim opțiunile pentru
informații de depanare și lansăm din nou TD HELLO obținem:

Meniul se deschide cu mouse-ul sau F10. Putem vedea fereastra CPU dacă alegem asta
din meniul View.

Observăm că simboluri din codul sursă apar acum și în fereastra CPU. Se poate folosi
mouse pentru a deschide context menu, de ex. în partea de jos pentru a modifica locația de
memorie afișată. F5 face zoom (maximize) pe fereastra curentă, Alt-N (N=1, 2 ...) schimbă
fereastra curentă, F2 stabilește sau șterge un breakpoint, F4 rulează până la cursor, F7 rulează
o instrucțiune intrând în subrutine (dacă instrucțiunea este CALL va merge în subrutină), F8
rulează o instrucțiune sărind peste subrutine, F9 merge în continuare până la un eventual
breakpoint, F10 deschide meniul. Alt-F5 comută pe user screen și înapoi, adică arată consola
cum ar fi dacă n-ar rula sub debugger.
Navigând prin meniuri putem observa și comenzile de tastatură pentru diverse acțiuni.
În caz de rulare neîntreruptă sau prin F7/F8 pe ultimul int 21h se va afișa codul de ieșire al
programului.

Exerciții: rulați pas cu pas mai multe programe deja existente folosind în special
fereastra CPU.

S-ar putea să vă placă și