Sezione |
Indirizzi Base
Registri Interni
|
Capitolo 1 |
Il Processore e il Debugger |
DEBUG 2/22 [30 di 60] |
|
|
Nel linguaggio comune un bug è una cosa fastidiosa, un pidocchio, una cimice, una calamità... | ||
Gli anglosassoni sono molto immediati nel definire i concetti e, spesso, associano ad eventi tecnici un'immagine forte e molto colorata; così un errore di programmazione diventa un bug.... | ||
.... e lo strumento che consente di localizzare ed eliminare i bug è diventato Debugger, lo "spulciatore"... | ||
La realtà è, a mio avviso, molto più nobile: il Debugger è molto di più, è un amico inseparabile, in grado quasi sempre di aiutarti a risolvere i problemi e a trovare gli errori più subdoli; la sua forza consiste nella capacità di simulare l'esecuzione di qualunque programma eseguibile (sia di tipo COM che di tipo EXE). | ||
Se l'assemblatore ha ritenuto corretta la sintassi del sorgente e il linker ha generato senza errore l'eseguibile non è detto che il nostro programma "giri" come ci aspettiamo; al contrario sono spesso in agguato gli errori di concetto che si manifestano di solito con devastante arroganza, bloccando tutto il computer e costringendoci a resettarlo (premere il pulsante di reset o chiudere l'applicazione con Ctrl-Alt-Canc). Sono i cosiddetti errori in run-time. | ||
In questi casi il modo migliore per capire
dove abbiamo sbagliato è ricompilare il sorgente con dei break-point,
cioè dei punti in cui il programma è costretto a fermarsi.
|
I break-point di solito si fissano inserendo nel punto desiderato l'istruzione INT 03H (Ricorda bene questo concetto!!); la loro presenza è del tutto irrilevante nell'esecuzione normale di un programma, ma se l'eseguibile è fatto girare sotto DEBUG esso si fermerà proprio nel punto previsto, consentendo l'esecuzione passo-passo delle successive istruzioni, fino a localizzare quella che ha creato l'errore run-time. |
|
Dunque nella fase di
collaudo e messa a punto di un programma il Debugger
è uno strumento di lavoro particolarmente utile; da questo punto di vista
si occupa del caricamento in memoria dell'eseguibile, in modo paragonabile a
quello del loader del sistema operativo e, dopo aver preparato i puntatori
alla prima istruzione (CS:IP) e alla prima locazione dello stack
(SS:SP)
cede il controllo a noi, manifestando la sua disponibilità con un trattino
posto sulla riga successiva all'intestazione:
| ||||
L'immagine proposta mostra l'intestazione del Symbolic Debug della Microsoft, SymDeb.exe, una versione più dotata di quella di solito disponibile, tipica del sistema operativo e fornita con esso, Debug.exe; le differenze tra le 2 versioni sono funzionali, ma sostanzialmente assicurano lo stesso servizio. |
|
Non bisogna ignorare, in questa fase di
presentazione, l'altra grande valenza del Debugger: forse è esagerato
chiamarlo programma per voyeur, ma
certamente grande è l'emozione nel cercare di capire la logica che ha
spinto un programmatore a sviluppare la propria creatura: il Debugger è in
grado di dare questa emozione!
|
Con il Debugger è possibile aprire ed eseguire qualunque programma eseguibile: poichè è in grado di mostrarne il codice dissassemblato (molto vicino a quello sorgente originale) è facile scorrerne il contenuto, per cercare di capire o scoprire i trucchi del suo autore. (come pensi che facciano i "crackatori" di professione?). |
|
Detto questo non rimane che cominciare l'avventura... |
|
Capitolo 1 | DEBUG 2/22 | |||||||
30 di 60 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|