You are on page 1of 5

COMANDOS BSICOS DE DEBUG

DEBUG
"Bug" significa fallo, defecto en un programa; debug" significa depurar
(escrutar y eliminar fallos), Debugger" (depurador).

SINOPSIS
DEBUG.EXE es un ejecutable que, hasta 2001, acompa a todas las
versiones de MS-DOS, a partir de la 2.0, y de Windows.
Se trata de una utilidad interactiva de exploracin de bajo nivel, pero que
tambin puede utilizarse para ciertas funciones. Por ejemplo: ensamblador a
lenguaje mquina. Para utilizarlo basta invocarlo desde MS-DOS o desde
una ventana DOS de Windows.

OPCIONES
Una vez que el programa est en ejecucin, el indicador ("prompt") es un
guin "-", indicando que el "Shell espera recibir rdenes. La opcin ms
sencilla es la interrogacin ?, cuyo resultado es una lista resumida de las
opciones disponibles:
Ensamblar

a (direccin)

Comparar

c (direccin de intervalo)

Volcar

d (intervalo)

Escribir

e (direccin) (lista de valores)

Llenar

f (lista de intervalos)

Ir

g (=direccin) (direcciones)

Hex

h (valor1, valor2)

Entrada

i (puerto)

Cargar
(nmero)

Mover

m (direccin de intervalo)

Nombre

(direccin)

(unidad)

o (byte de puerto)

Proceder

p (=direccin) (nmero)

Salir

Registrar

r (registrar)

Buscar

s (lista de intervalos)

Desensamblar

sector)

n (nombre ruta) (lista argumentos)

Salida

Seguimiento

(primer

t (=direccin) (valor)
u (intervalo)

Escribir
(nmero)
Asignar memoria expandida

(direccin)

(unidad)

(primer

sector)

xa (#pginas)

Desasignar memoria expandida

xd (identificador)

Asignar pginas de memoria expandida


(identificador)

xm

Mostrar estado de la memoria expandida

xs

(L

pgina)

(P

pgina)

La mayora de los comandos de debug ejecutan una accin y vuelven al


indicador del shell, pero si es un comando largo, como puede ser mostrar un
trozo grande de cdigo, puede detenerse pulsando CTRL-Pausa o
interrumpirse con CTRL-C para volver al shell.

ERRORES
Cuando debug no sabe interpretar un comando, muestra un mensaje de
error y un indicador "^" debajo del sitio del comando donde est el error.

COMANDOS
El comando 'h: la instruccin "H <op_1> <op_2> devuelve la suma y
la resta (en hexadecimal) de los dos operandos suministrados.
Donde op1 y op2 significan operandos.

Parmetros: 2 nmeros hexadecimales de 4 dgitos (mximo).


Resultado:
<resultado_1>; Es la suma (<op_1> + <op_2>)
<resultado_2>; es la resta (<op_1> - <op_2>)
Ejemplo:
-h 0003 0002
0005 0001
-h 0000 0001
0001 FFFF,
como se observa el resultado de la segunda operacin es FFFF, que es el
equivalente en complemento a 2 de -1.

El comando 'r: muestra o modifica registros.


Parmetros: (registro).
Resultado: Si especificamos un registro, DEBUG nos permite modificar el
contenido de ese registro, si no lo hemos especificado, presenta por pantalla
el contenido de los registros principales del procesador, adems muestra la
instruccin apuntada por CS: IP.

Registro de flags:

NV UP EI PL NZ NA PO NC

Desbordamiento

poner: OV

Direccin(reduccin/incremento)

poner: DN

Interrupcin(activar/desactivar) poner: EI
Signo (negativo / positivo)

quitar: NV
quitar UP

quitar: DI

poner: NG

quitar: PL

Cero (s / no)

poner: ZR

quitar: NZ

Acarreo Auxiliar (s / no)

poner: AC

quitar: NA

Paridad (par / impar)


Acarreo (s / no)

poner: PE
poner: CY

quitar: PO

quitar: NC

Ejemplo 1:
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000
DI=0000 DS=2048 ES=2048 SS=2048 CS=2048 IP=0100 NV UP EI PL NZ
NA PO NC 2048:0100 92 XCHG DX, AX
Ejemplo 2:
-r ax
AX 0000
:01
-r
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000
DI=0000 DS=2048 ES=2048 SS=2048 CS=2048 IP=0100 NV UP EI PL NZ
NA PO NC 2048:0100 92 XCHG DX, AX

El comando 'e: escribir en memoria.


Parmetros: <dir_comienzo> (lista de palabras a escribir)
Resultados:

Se escribe a partir de la direccin de memoria


DS:<dir_comienzo> la lista de palabras (dos dgitos hexadecimales) del
segundo parmetro. Si no se especifica un segundo parmetro entonces
DEBUG no permite introducir palabra a palabra los datos que queramos, a
partir de la direccin DS:<dir_comienzo>. Podemos pasar a la palabra
siguiente de memoria presionando la tecla ESPACIO, cuando hayamos
terminado de introducir los datos que queramos, hay que pulsar INTRO.
Ejemplo:
-E 100
2048:0100 56.
Ejemplo 2
-E 100 00 01 02
-

El Comando 't: traza o ejecuta paso a paso.


Parmetros: (< =direccin>); Direccin a partir de la cual se quiere que se
trace (OJO: HAY QUE PONER EL '= ) <num_instrucciones>; Nmero de
instrucciones que hay que ejecutar.

Resultados: se ejecutan las <NUM_instrucciones> instrucciones a partir de


CS:<direccin> (si se ha especificado <direccin>) o se ejecutan
<NUM_instrucciones> a partir de CS: IP, si no se especifica el parmetro
<NUM_instrucciones> se ejecuta una nica instruccin.
Ejemplo:

El Comando 'q': Salir de debug


Para poder salir del programa es introduciendo el comando 'q'.

You might also like