Comando: debug
DEBUG es un clon del comando DEBUG de MS-DOS. Algunas cosas menores no
se implementan. DEBUG no solo admite los registros 8086/8088 y 8087 y
los conjuntos de instrucciones, sino también el registro de 32 bits y
los conjuntos de instrucciones hasta la CPU PentiumPro, excepto las
extensiones MMX. DEBUG es una herramienta DOS relativamente avanzada
pero tiene muchos usos. Por ejemplo, se puede usar para:
* encontrar errores en los programas,
* crear programas a partir del código de ensamblador,
* inspeccionar y editar archivos binarios.
Sintaxis:
DEBUG [[unidad:][ruta]nom_archivo [lista_arg]]
[unidad:][ruta]nom_archivo Especifica el archivo que desea
probar. No tiene que ser un
ejecutable, podría ser un archivo
binario o de texto. Como puede ser
cualquier archivo, se debe especificar
la extensión del archivo.
lista_arg Especifica la información de línea de comandos
requerida por el archivo que desea probar. Consulte la
ejecución del programa a continuación para obtener más
información sobre la ejecución de ejecutables.
Una vez que se inicia la depuración, se muestra el símbolo del sistema
de depuración. Ingrese Q para salir de Debug y ? para mostrar la lista
de comandos de depuración.
Opciones:
Q Salir
? Ayuda
Inspección y edición de memoria:
COMPARAR:
C rango dirección Compare dos rangos de memoria, mostrando las
diferencias. Solo se requiere la dirección
inicial del segundo rango, Debug asumirá que el
segundo rango tendrá el mismo tamaño que el
primero.
Por ejemplo:
C 100,110 200
comparará el rango de 100,110 a 200,210.
VACIAR A:
D [rango] Mostrar el contenido de un rango de memoria. Si
no se especifica ningún rango, el volcado
mostrará 128 bytes, comenzando donde terminó el
último volcado o al comienzo del archivo
cargado.
DM Muestra la cadena del bloque de control de
memoria DOS (MCB) y la PSP actual.
ENTRAR:
E dirección [lista] Escriba sobre parte de la memoria, comenzando
en la dirección, son la lista de bytes. Para
ingresar una cadena de caracteres de texto,
encierre el texto entre comillas dobles.
Por ejemplo:
E 100 "¡Hola!"
LLENAR:
F rango lista Escriba sobre un rango de memoria con una lista
repetida de bytes. Por ejemplo, para establecer
un rango de memoria en cero, podría poner
E 100,110 0
y para establecer un rango de memoria en
"brumbrum"
E 100,107 "brum"
MOVERSE:
M rango_fuente dest_dirección
Copia el rango de origen del rango en otro
rango que comienza en la dirección destacada.
BUSCAR:
S rango lista Busca todas las ocurrencias de la lista de
bytes en el rango especificado. Se muestra la
dirección de inicio de cada ocurencia.
Cálculo de números en hexadecimal:
HEX
H valor1 valor2 Muestra dos números, el primero es valor1 +
valor2, el segundo es valor1 - valor2. H puede
manejar valores dword.
Carga y guardado de archivos:
CARGAR PROGRAMA O ARCHIVO:
L [dirección] Cargar programa.
L dirección unidad sector recuento
Cargar programa.
ESCOGER UN NOMBRE:
N [[unidad:][ruta]mon_programa [lista_arg]]
Establecer el nombre para el
archivo / programa actual.
ESCRIBIR PROGRAMA O ARCHIVO:
W [dirección] Escribe el programa / archivo actual en el disco.
Use N para cambiar el nombre si no desea
sobrescribir el archivo original.
W dirección unidad sector recuento
Escribe sectores.
Montaje y desmontaje:
MONTAR:
A [dirección] Ensamblador.
DESMONTABLE:
U [rango] Desmontar.
MODO 80x86:
M[configuración] El procesador actual (para fines de advertencias
de ensamblador y desansamblador, mas allá) puede
declararse como algo diferente a través de los
siguientes comandos:
m0 Declara que el procesador actual es un
8088
m1 Declara 80186
m2 Declara 286
m3 Declara 386
m4 Declara 486
m5 Declara Pentium
m6 Declara Pentium Pro
MC Declara la existencia de un coprocesador
matemático.
MNC Declara la ausencia de un coprocesador matemático.
MC2 Declara que el coprocesador matemático es un 287
(solo válido si el procesador actual es un 386)
M? (Solo versiones anteriores): Imprime el tipo de
procesador actualmente declarado.
M Imprimir el tipo de procesador declarado
actualmente.
Ejecución del programa:
VAMOS:
G [=dirección] [puntos_interrupción]
Comience la ejecución del programa cargado o el
código de máquina en la dirección especificada. La
ejecución se suspende en las direcciones de punto
de interrupción, lo que le permite inspeccionar la
memoria, etc.
CONTINUAR:
P [=dirección] [recuento]
Proceder con la ejecución en pasos.
REGISTRARSE:
R [registro [valor]]
Muestra todos los registros de la CPU, o mostrar/
establecer un registro particular. Acepta nombres
de registro de 32 bits (para CPU 80386+).
RN Muestra el estado del registro de FPU. DEBUG
mostrará solo los valores hexadecimales sin
formato de los registros, mientras que DEBUGX
mostrará los valores en formato de punto
flotante.
RX Cambia entre la pantalla de registro 8086 y 80386
(para CPU 80386+).
RASTRO:
T [=dirección] [recuento]
Rastro
TM [0|1] Establezca el modo de comando de rastreo, 0=INT
del proceso (predeterminado), 1=INT de un solo
paso (el modo compatible con la depuración de
MS-DOS).
Puerto I/O:
ENTRADA:
I Puerto Entrada desde un puerto
IW Puerto Entrada desde un puerto WORD
ID Puerto Entrada desde un puerto DWORD
Los valores DWORD requieren una CPU 80386+.
SALIDA:
O Puerto Valor Salida a un puerto.
OW Puerto Valor Salida a un puerto WORD.
OD Puerto Valor Salida a un puerto DWORD.
Los valores DWORD requieren una CPU 80386+.
Comandos de memoria expandida (EMS)
(solo si está presente un EMM v4.0):
XA recuento Asigne un identificador EMS 'vasío' con cero
páginas.
XD maneja Trato de localizador.
XM página_lógica página_física identificador
Mapa de memoria.
XR manejar recuento
Reasignar un identificador EMS.
XS Mostrar estado.
X? Mostrar ayuda sobre los comandos X.
Comentarios:
DEBUG usa hexadecimal (base 16). Las direcciones de memoria se muestran
en segmento: forma offset, p. 0D00: 0100. Los últimos cuatro digitos
hexadecimales, que especifican el desplazamiento del segmento, pueden
ir de 0000 a FFFF, un rango de 64 kilobytes. Los ejecutables con la
extensión .com tienen todos sus datos y códigos en un segmento. Por lo
tanto, para los archivos .com, generalmente solo puede escribir el
desplazamiento al especificar direcciones de memoria en los comandos
DEBUG. DEBUG asumirá el segmento del programa. Lo mismo también es
cierto para los archivos de texto / binarios que son <64K de largo.
Para especificar un rango de memoria, separe dos direcciones con una
coma. La carga de archivo .HEX no se implementa en DEBUG. El
ensamblador y desensamblador admite todas las instrucciones
documentadas públicamente para los chip Intel a través del Pentium Pro
(P6), excepto las instrucciones MMX. El ensamblador y desensamblador
le informará si alguna instrucción es inapropiada para el procesador
actual. Se admiten códigos de operación FPU.
Ejemplos:
Crear una copia de seguridad del sector de arranque (sector número 0
con 512 bytes = 0x200) de la unidad C: (número 2) en el archivo
BOOT_C.BIN en el disquete A:
A:
cd \
echo L 100 2 0 1 >BOOT_C.TXT
echo RCX >>BOOT_C.TXT
echo 200 >>BOOT_C.TXT
N BOOT_C.BIN >>BOOT_C.TXT
W >>BOOT_C.TXT
Q >>BOOT_C.TXT
DEBUG <BOOT_C.TXT
Mirando con DEBUG en la RAM de la tarjeta gráfica para encontrar
algunos caracteres especiales como el año para identificar la tarjeta:
DEBUG
S C000:0000,07FF "BIOS"
S C000:0,7FF "(C)"
S c000:0,7ff "199"
s c000:0,7ff "200"
D C000:0000,100
Q
Ver también:
(emm386)
jemm386
jemmex
undelete
Copyright © 2003 Robert Platt, modificado en 2008 por W. Spiegl.
Traducido en 2020 por Lorenzo del Toro Saravia.
Este archivo se deriva del comando de especificaciones HOWTO de FreeDOS.
Consulte el archivo H2Cpying para ver las condiciones de copia.