|
 |
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:
Microsoft (R) Symbolic Debug Utility Version 4.00
Copyright (C) Microsoft Corp 1984, 1985. All rights reserved.
Processor is [80286]
- |
|
 | 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... |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|