Está en la página 1de 4

LA UTILIDAD DEBUG

La utilidad DEBUG includa en los sistemas MS-DOS, es una herramienta para


depuracin de programas muy interesante ue permite desensam!lar los mdulos y,
adem"s, e#ecutar programas paso a paso, $iendo las modi%icaciones ue su%ren los registros
y !anderas& Se trata de un programa menos comple#o, cmodo y potente ue depuradores
de cdigo como 'ur!o De!ugger (de Borland) o *ode$ie+ (Microso%t), pero en algunos casos
es m"s ,til& -eremos ahora los principales comandos del DEBUG, los cuales tam!i.n son
admitidos en su mayora por *ode$ie+, por lo ue el tiempo in$ertido en aprenderlos ser" ,til
no slo para conocer el cl"sico y mtico DEBUG&
Sinta/is general0
DEBUG 1programa&e/t 1par"metros2 2
Los programas pueden ser de tipo E3E o *OM4 en el caso de los primeros se les cargar" ya
montados y con los registros iniciali5ados, listos para su e#ecucin&
Se pueden cargar otros %icheros de cualuier e/tensin o simplemente entrar en el programa
sin cargar ning,n %ichero& 6l entrar, aparecer" el prompt particular del DEBUG0 un guin (-)&
Entonces se pueden teclear rdenes ue constar"n generalmente de una sola letra& La
mayora de las mismas admiten par"metros, ue normalmente ir"n separados por comas&
Estos par"metos pueden ser n,meros he/adecimales de hasta dos o cuatro dgitos, registros
y, adem"s0
- *adenas de caracteres0 Encerradas entre comillas simples o do!les& El te/to puede a su
$e5 encerrar %ragmentos entrecomillados, empleando comillas distintas a las m"s e/teriores&
E#emplo0
7*adena de caracteres7, 7Otra 8cadena8 m"s7, 8*urso de 79:9;78
- Direcciones0 <ueden e/presarse con sus correspondientes $alores num.ricos o !ien
apoy"ndose en alg,n registro de segmento, aunue el o%%set siempre ser" num.rico0
=E>?06D@=, *S0=::, ES0=>6*
- Aangos0 Son dos direcciones separadas por una coma4 o !ien una direccin, la letra 8L8 y un
$alor num.rico ue indica el n,mero de !ytes a partir de la direccin&
- Listas0 Son secuencias de !ytes yBo cadenas separadas por comas0
6*, 7'e/to de e#emplo7, :D, :6, 8C8
El DEBUG del MS-DOS D&: posee una ayuda in$oca!le con el comando E, en la ue se
resumen las principales rdenes& 6 continuacin se listan las m"s interesantes0
* Q (Fuit)0 permite a!andonar el programa y $ol$er al DOS&
* D 1GdireccinH 1num!ytes22 (dump)0 $isuali5a el contenido de la memoria& SIMDEB
permite adem"s $isuali5arla en pala!ras (DJ), do!les pala!ras (DD), coma %lotante &&&
* A 1GdireccinH2 (assem!le)0 permite ensam!lar a partir de *S0K< si no se indica una
direccin concreta& Se admiten las directi$as DB y DJ del ensam!lador& Las instrucciones
ue reuieran indicar un registro de segmento, con DEBUG hay ue ponerlas en una sola
lnea& <or e#emplo0
* E GdireccinH 1GlistaH2 (enter)0 permite consultar y modi%icar la memoria, !yte a !yte&
<or e#emplo, con E @?: =,@,? se introduciran los !ytes =, @ y ? a partir de DS0@?:& Si no se
indica GlistaH, se $isuali5ar" la memoria !yte a !yte, pudi.ndose modi%icar los !ytes
deseados, a$an5ar al siguiente (!arra espaciadora) o retroceder al anterior (signo -)& <ara
aca!ar se pulsa AE'UAL&
* U 1GdireccionH 1GrangoH22 (unassem!le)0 desensam!la la memoria& *omo e#emplos
$"lidos0 U ES0=::, U E:::0=>M: &&& si se indica rango, DEBUG desensam!lar" ese n,mero
de !ytes y SIMDEB ese n,mero de lneas& <or de%ecto se emplea *S0 como registro de
segmento&
* R 1GregistroH2 (register)0 permite $isuali5ar y modi%icar el $alor de los registros& <or
e#emplo, si se e#ecuta la orden 8rip8, se solicitar" un nue$o $alor para K<4 con AN se muestran
los %lags y se permite modi%icar alguno0
Flag Activo Borrado
Des!ordamiento O- L-
Direccin DL ($) U< (O)
Knterrupcin EK DK
Signo LG (G:) <L (H:)
*ero PA (Q:) LP (RQ:)
6carreo au/iliar 6* L6
<aridad <E (par) <O (impar)
6carreo *I L*
* G 1QGdireccinH 1,GdireccinH,&&&22 (go)0 e#ecuta cdigo desde *S0K< (a menos ue se
indiue una direccin concreta)& Si se tra!a#a so!re memoria AOM no de!e indicarse la
segunda direccin& <ara ue el %lu#o del programa se detenga en la @S direccin o posteriores
de!e pasar necesariamente por ella(s)& Se puede indicar hasta =: direcciones donde de!e
detenerse&
* T 1G$ecesH2 (trace)0 Aastrea la e#ecucin de una instruccin, e#ecuta una instruccin del
programa (a partir de *S0K<) mostrando a continuacin el estado de los registros y la
siguiente instruccin& E#ecutar '=: eui$aldra a e#ecutar =; $eces el comando '& Si la
instruccin es *6LL o KL', se e#ecutar" como tal introduci.ndose en la su!rutina o ser$idor
de interrupciones correspondiente
* P 1G$ecesH2 (proceed)0 similar al comando ', pero al encontrarse un *6LL o KL' lo
e#ecuta de golpe sin entrar en su interior
* N Gespeci%icacionT%icheroH (name)0 se asigna un nom!re al programa ue est" siendo
creado o modi%icado& Se puede indicar la trayectoria de directorios&
* L 1GdireccinH2 (load)0 carga el %ichero de nom!re indicado con el comando L& Si es
e#ecuta!le lo prepara adecuadamente para su inmediata e#ecucin& En B30*3 ueda
depositado el tamaUo del %ichero (B3Q: para %icheros de menos de ;M V!)& <or de%ecto, la
direccin es *S0=::h&
* L GdireccinH GunidadH GprimerTsectorH GnumTsectoresH (load)0 carga sectores de la
unidad :, =, &&& (6, B, &&&) a memoria& Se trata de sectores lgicos del DOS y no los sectores
%sicos de la BKOS& Las $ersiones antiguas de SIMDEB dan errores en particiones de m"s de
?@ M!&
* W 1GdireccinH2 (+rite)0 gra!a el contenido de una 5ona de memoria a disco& Si no se
indica la direccin, se gra!a desde *S0=::h hasta *S0=::hWn,meroT!ytes4 el n,mero de
!ytes se indica en B30*3 (no es una direccin segmentada sino un $alor de ?@ !its)& Si se
trata de un E3E no se permitir" gra!arlo (para modi%icarlos, hay ue renom!rarles para
cam!iarles la e/tensin, aunue de esta manera no ser"n montados al cargarlos)&
* W GdireccinH GunidadH GprimerTsectorH GnumTsectoresH (+rite)0 gra!a sectores de la
memoria a disco en la unidad :, =, &&& (6, B, &&&)& Se trata de sectores lgicos del DOS y no los
sectores %sicos de la BKOS& Las $ersiones antiguas de SIMDEB dan errores en particiones
de disco duro de m"s de ?@ M!&
* S GrangoH GlistaH (search)0 !usca una cadena de !ytes por la memoria& <ara !uscar la
cadena 7<E<E7 terminada por cero en un "rea de D=@ !ytes desde DS0=:: se hara0 S =:: L
@:: 7<E<E7,: (por de%ecto se !usca en DS0)& Lo se encontrara sin em!argo 7pepe7 (en
min,sculas)&
X F GrangoH GlistaH (%ill)0 llena la 5ona de memoria especi%icada con repeticiones de la
lista de !ytes indicada& <or e#emplo, para rellenar cdigos :66h =::h !ytes a partir de
>9::h0: se e#ecutara N >9::0: L =:: 664 en $e5 de 66 se podra ha!er indicado una lista de
!ytes o cadenas de caracteres&
* C GrangoH GdireccinH (compare)0 compara dos 5onas de memoria mostrando las
di%erencias& <or e#emplo, para comparar D !ytes de DS0=:: y DS0@:: se hace0 * =:: L D
@::&
* M GrangoH GdireccinH (mo$e)0 M"s ue mo$er, copia una 5ona de memoria en otra de
manera inteligente (controlando los posi!les solapamientos de los !loues)&
* I GpuertoH (input)0 $isuali5a la lectura del puerto de EBS indicado&
* O GpuertoH G$alorH (output)0 en$ia un $alor a un puerto de EBS&
* G$alor=H G$alor@H (he/aritmetic)0 muestra la suma y resta de $alor= y $alor@, am!os
operandos de un m"/imo de =; !its (si hay des!ordamiento se trunca el resultado, ue
tampoco e/cede los =; !its)&
'am!i.n e/isten comandos en DEBUG para acceder a la memoria e/pandida0 3S
(o!tener el estado de la memoria e/pandida), 36 npag (locali5ar npag p"ginas), 3D handle
(desalo#ar el handle indicado) y 3M paginaTlogica paginaT%isica handle (mapear p"ginas)&