Red de conocimiento informático - Conocimiento de la instalación - Comprender los comandos principales de DEGUG y su uso, preferiblemente con ejemplos.

Comprender los comandos principales de DEGUG y su uso, preferiblemente con ejemplos.

Colección de comandos DEGUG

Depurar

Inicia el depurador, un programa utilizado para probar y depurar archivos ejecutables de MS-DOS.

Depuración

Parámetros

[unidad:][ruta] nombre de archivo

Especifique la ubicación y el nombre del archivo ejecutable que se va a probar .

parámetros

Especifique cualquier información de línea de comando necesaria para que el ejecutable se pruebe.

++

Instrucciones

Utilice el comando debug sin especificar el archivo a probar

Si no especifica la ubicación y nombre de archivo, luego escriba todos los comandos de depuración en respuesta al mensaje de depuración. guión (-).

Comandos de depuración

La siguiente es una lista de comandos de depuración: Muestra la lista de comandos de depuración.

a Recopilación de mnemónicos 8086/8087/8088.

c Compara dos partes de la memoria.

d Muestra el contenido de parte de la memoria.

e Introduzca datos en la memoria a partir de la dirección especificada.

f llena una porción de la memoria con el valor especificado.

g Ejecuta un archivo ejecutable en la memoria.

h realiza operaciones hexadecimales.

i Muestra el valor de 1 byte de un puerto específico.

l Carga el contenido de un archivo o sector del disco en la memoria.

m Copia el contenido de un bloque de memoria.

/n Especifica un archivo para el comando l o w, o especifica parámetros para el archivo que se está probando.

o Envía un valor de 1 byte al puerto de salida.

p Ejecutar un bucle, repetir una instrucción de cadena, una interrupción de software o una subrutina.

q Detener la sesión de depuración.

r Mostrar o cambiar uno o más registros.

s Busca en una porción de la memoria un patrón de uno o más valores de bytes.

t Ejecute una instrucción y luego muestre el contenido de todos los registros, el estado de todos los indicadores y la forma decodificada de la instrucción que el depurador ejecutará a continuación.

u Descompone los bytes y muestra la declaración sin formato correspondiente.

w Escribe el archivo probado en el disco.

xa asigna memoria extendida.

xd libera memoria extendida.

xm asigna páginas de memoria extendida.

xs muestra el estado de la memoria extendida.

Parámetros de comando separados

Todos los comandos de depuración, excepto el comando q, aceptan parámetros. Los parámetros pueden estar separados por comas o espacios, pero estos delimitadores sólo son necesarios entre dos valores hexadecimales. Por lo tanto, los siguientes comandos son equivalentes:

dcs:100 110

d cs:100 110

d,cs:100,110

Especifique una entrada de dirección válida

El parámetro de dirección del comando debug especifica una ubicación de memoria, que puede ser un nombre de dos dígitos o una dirección de campo de cuatro dígitos que contiene un registro de campo alfabético. Los comandos A, G, L, T, U y W están predeterminados en CS, todos los demás comandos están predeterminados en DS y todos los valores están en formato hexadecimal.

Las direcciones válidas son las siguientes:

CS:0100

04BA:0100

Hay dos puntos entre el nombre del segmento y el desplazamiento.

Especificar elementos de rango válidos

El parámetro de rango en el comando de depuración especifica el rango de memoria. Puede elegir entre dos formatos de rango: dirección inicial y dirección final, o dirección inicial y rango de longitud (indicado por l).

Por ejemplo, las dos sintaxis siguientes especifican un rango de 16 bytes que comienza en CS:100:

cs:100 10f

cs:100 l 10

++

Subcomandos de depuración

Seleccione el comando de depuración para obtener más detalles.

Depurar:A (Ensamblaje)

Depurar:C (Comparar)

Depurar (Volcar)

Depurar:E (Tipo)

Depuración:F (Relleno)

Depuración:G (Dirección)

Depuración:H (Hexadecimal)

Depuración:I ( Entrada)

Depurar: L (cargar)

Depurar: M (mover)

Depurar: N (nombre)

Depurar: O (salida)

Depurar: P (ejecutar)

Depurar: Q (salir)

Depurar: r (registro)

Depurar: s (búsqueda)

Depurar: T (rastreo)

Depurar: U (desmontaje)

Depurar: W (escribir)

Depurar:XA (asignar memoria extendida)

Depurar:XD (desasignar memoria extendida)

Depurar:XM (asignar página de memoria extendida)

Depurar: XS (muestra el estado de la memoria extendida)

****************************** Subcomando de depuración**** ******** **********************

Depuración:A (ensamblaje)

Cambie la ayuda de 8086/8087/8088 Los tokens se fusionan directamente en la memoria.

Este comando crea código de máquina ejecutable a partir de declaraciones en lenguaje ensamblador. Todos los valores están en formato hexadecimal y deben ingresarse en incrementos de uno a cuatro caracteres. Especifique un mnemotécnico de prefijo antes del código de operación al que se hace referencia.

a [dirección]

Argumentos

dirección

Especifica la ubicación donde se escriben las instrucciones en lenguaje ensamblador. Utilice valores hexadecimales para las direcciones y escriba todos los valores que no terminen con el carácter "h". Si no se especifica ninguna dirección, a iniciará el ensamblaje desde donde se detuvo por última vez.

Para obtener información sobre cómo ingresar datos en bytes específicos, haga clic en Depurar E (Tipo) en la lista de temas relacionados.

Para obtener información sobre el desensamblaje de bytes, haga clic en Depurar U (Desensamblaje) en la lista de temas relacionados.

Ejemplo

a El comando a a admite todas las formas de comandos de registro indirecto, como se muestra en el siguiente ejemplo:

add bx,34[bp+2] .[si- 1]

pop [bp+di]

push [si] )

Todos los sinónimos de código de operación también son compatibles, como se muestra a continuación ejemplo:

loopz 100

loope 100

ja 200

jnbe 200

Para códigos de operación 8087, el Se debe especificar el prefijo wait o fwait, como se muestra en el siguiente ejemplo:

fwait fadd st,st(3) ; esta línea combina

; > Descripción

Uso de mnemónicos

Los mnemónicos alternativos para segmentos son cs:, ds:, es: y ss:. Los mnemónicos de procesamiento de cadenas deben declarar explícitamente el tamaño de la cadena. Por ejemplo, puede usar movsw para mover una cadena de 16 bits y mov**** (el sistema está enmascarando el texto por algún motivo)*** (el sistema está enmascarando el texto por algún motivo) para mover un 8 -cadena de bits.

Saltos y llamadas del ensamblador

El ensamblador ensambla automáticamente saltos y llamadas cortos, cercanos y lejanos a la dirección de destino en función del reemplazo de bytes.

Estos saltos o llamadas se pueden reemplazar con un prefijo cercano o lejano, como en el siguiente ejemplo:

-a0100:0500

0100:0500 jmp 502 ;

0100:0502 jmp cerca de 505; salto cercano de 3 bytes

0100:0505 jmp lejano 50a; salto lejano de 5 bytes

El prefijo cercano puede ser abreviado a ne.

Distinguir entre ubicaciones de memoria de palabra y byte

Cuando el operando apunta a una ubicación de memoria de palabra o byte, el tipo de datos debe especificarse utilizando el prefijo palabra ptr o el prefijo byte ptr. Las abreviaturas aceptables son poco a poco. El siguiente ejemplo muestra ambos formatos:

dec wo [si]

neg byte ptr [128]

Especificar operandos

Usos de depuración operandos encerrados entre corchetes ([ ]) para hacer referencia a direcciones de memoria. Esto se debe a que Debug no puede distinguir entre operandos inmediatos y operandos de direcciones de memoria. El siguiente ejemplo muestra ambos formatos:

mov ax,21 ; usa 21h para cargar AX

mov ax,[21] usa

; contenido de la ubicación 21h en AX

; contenido de la ubicación de memoria 21h

Uso de directivas

El uso del comando a proporciona dos métodos para hacer referencia a direcciones de memoria.

El uso del comando a proporciona dos directivas de uso común: el código de operación db, que compila valores de bytes directamente en la memoria, y el código de operación dw, que compila valores de palabras directamente en la memoria. 3000. "BACH"

++

Depuración:C (Comparar)

Compara dos partes de la memoria.

c rango de dirección

Argumentos

rango

Especifica la dirección inicial y final de la primera área de memoria que se comparará, O dirección inicial y longitud. Para obtener información sobre valores de rango válidos, haga clic en Notas de depuración en la lista de temas relacionados.

Dirección

Especifica la dirección inicial de la segunda área de memoria que se va a comparar. Para obtener información sobre valores de dirección válidos, haga clic en Notas de depuración en la lista de temas relacionados.

++

Ejemplo

Los siguientes comandos tienen el mismo efecto:

c100,10f 300

c100l10 300

Cada uno de estos comandos compara el bloque de memoria de 100h a 10Fh con el bloque de memoria de 300h a 30Fh.

Debug responde al comando anterior y muestra la siguiente información (asumiendo DS = 197F):

197F:0100 4D E4 197F:0300

197F:0101 67 99 197F:0301

197F:0102 A3 27 197F:

197F:0103 35 F3 197F:0303

197F:0104 97 BD 197F:0304

197F:0105 04 35 197F:0305

197F:0107 76 71 197F:0307

197F:0108 E6 11 197F:0308

197F :0109 19 2C 197F:0309

197F:010A 80 0A 197F:030A

197F:010B 36 7F 197F:030B

197F:010C BE 22 197F :030C

197F:010D 83 93 197F:030D

197F:010E 49 77 197F:030E

197F:010F 4F 8A 197F:030F

Tenga en cuenta que las direcciones 197F:0106 y 197F:0306 faltan en la lista, lo que indica que los valores en estas direcciones son los mismos. son iguales.

++

Explicación

Si el rango y el área de memoria de direcciones son los mismos, Debug devuelve un mensaje de depuración y no muestra nada. Si hay diferencias, Depurar se mostrará en el siguiente formato:

dirección1 byte1 byte2 dirección2

++++

Depuración (volcado)

Muestra el contenido del rango de direcciones de memoria.

d [rango]

Parámetros

rango

Especifica la dirección inicial y final del área de memoria cuyo contenido se va a almacenar. mostrado, O dirección inicial y longitud. Para obtener información sobre valores de rango válidos, haga clic en la descripción de depuración en la lista de temas relacionados. Si no especifica un rango, el depurador muestra 128 bytes a partir del final del rango de direcciones especificado en el comando d anterior.

Para obtener información sobre cómo mostrar el contenido de los registros, haga clic en Depuración de R (Registros) en la lista de temas relacionados.

++

Ejemplo

Supongamos que escribe el siguiente comando:

dcs:100 10f

Depuración el programa El contenido de este rango se mostrará en el siguiente formato:

04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 TOM.SAWYER......

Si escribe el comando d sin parámetros, Debug se mostrará en el formato descrito en el ejemplo anterior. Cada línea de visualización comienza en una dirección 16 bytes mayor que la dirección de la línea anterior (u 8 bytes si se muestra una pantalla de 40 columnas).

Para cada comando d posterior sin argumentos, Debug muestra los bytes inmediatamente posteriores al último comando mostrado.

Si escribe el siguiente comando, el depurador mostrará el contenido de los 20h bytes a partir de CS:100:

dcs:100 l 20

Si Si escribe el siguiente comando, el depurador mostrará el contenido de todos los bytes en el segmento CS 100h a 115h:

dcs:100 115

++

dcs:100 115

La depuración muestra todos los bytes en el segmento CS de 100h a 115h.

++

Descripción

Al usar el comando d, Debug mostrará el contenido de la memoria en dos partes: la parte hexadecimal (cada byte El valor se expresa en formato hexadecimal) y la parte ASCII (el valor de cada byte se expresa en caracteres ASCII). En la parte ASCII de la pantalla, cada carácter que no se imprime está precedido por un punto (.) En la parte ASCII de la pantalla, cada carácter que no se imprime está precedido por un punto (.) Cada línea de la pantalla muestra 16 bytes, un byte 8 y una palabra. es un guión entre las secciones 9. Cada línea de visualización comienza en un límite de 16 bytes

++

Depuración:E (tipo)

Ingresar datos. en la memoria en la dirección especificada

Los datos se pueden escribir en formato hexadecimal o ASCII. Cualquier dato previamente almacenado en la ubicación especificada se perderá por completo.

Parámetros

dirección

Especifica la primera ubicación de memoria de los datos de entrada

lista

Especifica en bytes consecutivos la memoria de entrada

. Para obtener información sobre la memoria integrada, haga clic en Depurar A (Ensamblaje) en la lista de temas relacionados

Para obtener información sobre cómo mostrar la memoria parcial, haga clic en Depurar D (Volcado) en la lista de temas relacionados

++

Ejemplo

Imagínese escribir el siguiente comando:

ecs:100

Debug muestra el contenido del primer byte. en el siguiente formato:

04BA:0100 EB

Para cambiar el valor a 41, en el punto de inserción escriba 41 de la siguiente manera:

04BA: 0100 EB. p>

04BA:0100 EB.41_

Puede usar el comando e para escribir el valor de bytes consecutivos. Presione la tecla BARRA ESPACIADORA en lugar de presionar la tecla ENTER después de escribir. nuevo valor y la depuración mostrará el siguiente valor. En este ejemplo, si presiona la tecla BARRA ESPACIADORA tres veces, la depuración mostrará el siguiente valor:

04BA:0100 EB.41 10.00.BC._.

Para cambiar el valor hexadecimal BC a 42, escriba 42 en el punto de inserción, de la siguiente manera:

04BA:0100 EB 41 10.00.00.BC.42_

.

Supongamos que se decide que el valor 10 debe ser 6F. Para corregir este valor, presione la tecla GUIÓN dos veces para regresar a la dirección 0101 (valor 10). El depurador muestra lo siguiente:

04BA: 0100 EB.41 10.00.BC.42-

04BA:0102 00.

04BA:0101 10.6f_

Ingresar en el punto de inserción 6f, cambiar el valor de la siguiente manera:

04BA:0101 10.6f_

Presione la tecla ENTER para detener el comando e y regresar al mensaje de depuración.

El siguiente es un ejemplo de entrada de cadena:

eds:100 "Este es un ejemplo de texto"

La cadena se completará con 24 caracteres a partir de Festival DS:100.

++

Instrucciones

Uso de parámetros de dirección

Si especifica el valor de dirección pero no especifica el valor del parámetro de lista opcional , Debug mostrará la dirección y el contenido, repetirá la dirección en la siguiente línea y luego esperará su entrada. En este punto, puede realizar una de las siguientes acciones:

- Reemplazar el valor del byte. Para hacer esto, escriba el nuevo valor después del valor actual. Si el valor que escribe no es un valor hexadecimal válido, o si el valor contiene más de dos dígitos, Debug no muestra los caracteres no válidos o adicionales.

- Ir al siguiente byte. Para hacer esto, presione la tecla BARRA ESPACIADORA. Para cambiar el valor de este byte, escriba el nuevo valor después del valor actual. Si se excede el límite de 8 bits cuando se presiona la BARRA ESPACIADORA, el depurador muestra una nueva línea con la nueva dirección al principio de la línea.

- Regresar al byte anterior. Para hacer esto, presione la tecla GUIÓN (-). Puede presionar la tecla GUIÓN (-) repetidamente para devolver más de un byte. Cuando se presiona la tecla HYPHEN, Debug comenzará una nueva línea y mostrará la dirección actual y el valor del byte.

- Deja de ejecutar el comando e. Para hacer esto, presione ENTRAR. Puede presionar ENTER en cualquier posición de byte.

Uso de parámetros de lista

Si especifica un valor para un parámetro de lista, los comandos e posteriores reemplazarán el valor del byte existente con el valor de la lista. Si se produce un error, el valor del byte no se cambia.

Los valores de la lista pueden ser bytes hexadecimales o cadenas. Utilice espacios, comas o tabulaciones para separar valores. Las cadenas deben estar entre comillas simples o dobles.

++++

Depuración:F (Rellenar)

Rellena la dirección en el área de memoria especificada con el valor especificado.

Los datos se pueden especificar en formato hexadecimal o ASCII. Se perderán todos los datos previamente almacenados en la ubicación especificada.

f lista de rango

Argumentos

rango

Especifica las direcciones inicial y final del área de memoria que se va a llenar, o la dirección inicial dirección y longitud. Para obtener información sobre valores de rango válidos, haga clic en Notas de depuración en la lista de temas relacionados.

Lista

Especifica los datos a introducir. La lista puede constar de números hexadecimales o cadenas entre comillas.

++

Ejemplo

Imagina escribir el siguiente comando:

f04ba:100l100 42 45 52 54 41

En respuesta, Debug llenará las ubicaciones de memoria de 04BA:100 a 04BA:1FF con el valor especificado.

++

Descripción

Usando el parámetro de rango

Si el número de bytes contenidos en el rango es mayor que el valor en la lista, Debug iterará sobre los valores en la lista de asignación hasta que se llenen todos los bytes del rango.

Si alguna memoria en el rango está dañada o no existe, Debug mostrará un mensaje de error y detendrá el comando f.

Uso de parámetros de lista

Si la lista contiene más valores que el número de bytes en el rango, Debug ignora los valores adicionales en la lista.

++

Depuración:G (dirección)

Ejecuta el programa actualmente en la memoria.

g [=dirección] [puntos de interrupción]

Parámetros

=dirección

Especifica la dirección del programa que se ejecutará en el memoria actual. Si no se especifica ninguna dirección, Windows 2000 comienza la ejecución del programa en la dirección actual en el registro CS:IP.

Puntos de interrupción

Especifique de 1 a 10 puntos de interrupción temporales que se pueden establecer como parte del comando g.

Para obtener información sobre bucles de ejecución, repetición de instrucciones de cadena, interrupciones de software o subrutinas, haga clic en Depuración P en la lista de temas relacionados.

Para obtener información sobre la ejecución de instrucciones, haga clic en Depurar T (Seguimiento) en la lista de temas relacionados.

Ejemplo

Si escribe el siguiente comando:

gcs:7550

Windows 2000 ejecuta el programa en la memoria actual hasta que Se alcanza el segmento CS En un punto de interrupción en la dirección 7550, la depuración muestra el contenido de los registros y el estado de las banderas, y finaliza el comando g.

El siguiente comando establece dos puntos de interrupción:

gcs:7550, cs:8000

Si escribe el comando g nuevamente después de encontrar un punto de interrupción en Debug, comenzará la ejecución desde la instrucción después del punto de interrupción, en lugar de desde la dirección inicial habitual.

++

Explicación

Usar parámetros de dirección

Los parámetros de dirección deben ir precedidos por un signo igual (=) para distinguirlos. dirección inicial y punto de interrupción.

Especificar puntos de interrupción

No importa dónde escriba un punto de interrupción en la lista de puntos de interrupción, el programa se detendrá en el primer punto de interrupción encontrado.

Cuando el programa alcanza un punto de interrupción, Debug restaurará todas las direcciones de los puntos de interrupción a las instrucciones originales y mostrará el contenido de todos los registros, el estado de todos los indicadores y la forma decodificada de la última instrucción ejecutada.

Si no detiene el programa en un punto de interrupción, el programa de depuración no reemplaza el código de interrupción con la instrucción original.

Restricciones en la configuración de puntos de interrupción

Los puntos de interrupción solo se pueden establecer en direcciones que contengan el primer byte del código de operación 8086 (código de operación). Si se establecen más de 10 puntos de interrupción, Debug mostrará el siguiente mensaje:

error de bp

Requisitos para el puntero de pila de usuario

El puntero de pila de usuario debe ser válido Y deben haber 6 bytes disponibles para el comando g. debug establece el puntero de la pila de usuarios y envía indicadores de usuario, registros de segmentos de código y punteros de instrucciones a la pila de usuarios. (El sistema operativo puede fallar si la pila de usuarios no es válida o es demasiado pequeña). La depuración establece un código de interrupción en el punto de interrupción especificado (0CCh).

Reiniciar un programa

No intente reiniciar un programa después de que Windows 2000 muestre el siguiente mensaje:

El programa finalizó correctamente

Para ejecutar el programa correctamente, se debe recargar el programa usando los comandos Debug n (nombre) y l (cargar).

++++

Depuración:H (hexadecimal)

Realiza operaciones hexadecimales en los dos parámetros especificados.

h valor1 valor2

Parámetros

valor1

Representa cualquier número hexadecimal en el rango de 0 a FFFFh.

valor2

Representa el segundo número hexadecimal en el rango de 0 a FFFFh.

++

Ejemplo

Supongamos que escribe el siguiente comando:

h19f 10a

La depuración realiza la operación y Se muestran los siguientes resultados.

02A9 0095

++

Descripción

La depuración primero agrega los dos parámetros especificados y luego comienza desde el primer parámetro Resta el segundo argumento. Los resultados del cálculo se muestran en una línea: primero la suma, luego la diferencia.

++++

Depuración:I (entrada)

Lee y muestra el valor del byte del puerto especificado.

puerto i

Parámetros

puerto

Especifique el puerto de entrada por dirección. Las direcciones pueden ser valores de 16 bits.

Para obtener información sobre el envío de valores de bytes al puerto de salida, haga clic en Depurar O (Salida) en la lista de temas relacionados.

++

Ejemplo

Supongamos que se escribe el siguiente comando:

i2f8

También suponga que el puerto El valor del festival es de 42h.

Debug lee los bytes y muestra el siguiente valor:

42

++

Debug:L (Cargar)

Copia el archivo o El contenido de un sector de disco específico se carga en la memoria.

Para cargar el contenido de un archivo de disco desde la memoria y especificar el número de bytes en el registro BX:CX, utilice la siguiente sintaxis:

l [dirección]

Para omitir el sistema de archivos de Windows 2000 y cargar un sector específico directamente, use la siguiente sintaxis:

l dirección número de inicio de la unidad

Argumentos

dirección

p>

especifica la ubicación de memoria desde la cual cargar el contenido del archivo o sector. Si no se especifica ninguna dirección, Debug utilizará la dirección actual en el registro CS.

Unidad

Especifica la unidad que contiene el disco desde el cual se leerán los sectores especificados. El valor es un número: 0 = A, 1 = B, 2 = C, etc.

inicio

Especifica el número hexadecimal del primer sector en el que se cargará el contenido.

número

Especifica el número hexadecimal de sectores contiguos de contenido que se cargarán. Los parámetros de unidad, inicio y número solo se pueden usar si desea cargar el contenido de un sector específico, en lugar del archivo especificado en la línea de comando de depuración o el comando de depuración n(nombre) más reciente.

Para obtener información sobre los archivos especificados para el comando l, haga clic en Depurar n (nombre) en la lista de temas relacionados.

Para obtener información sobre los archivos escritos en el disco para su depuración, haga clic en Depurar w (Escribir) en la lista de temas relacionados.

++

Ejemplo

Imagina que inicias Debug y escribes el siguiente comando:

nfile.com

Ahora puedes cargar File.com escribiendo l.

Supongamos que necesita cargar el contenido de 109 (6Dh) sectores de la unidad C en la memoria en la dirección 04BA:0100, comenzando en el sector lógico 15 (0Fh). Para hacer esto, escriba el siguiente comando:

l04ba:100 2 0f 6d

++

Nota

Usar sin parámetros l comando

Cuando se utiliza el comando l sin parámetros, el archivo especificado en la línea de comando de depuración se cargará en la memoria comenzando en la dirección CS:100. Si no se especifica ningún archivo en la línea de comando de depuración, el archivo cargado será el archivo especificado más recientemente usando el comando n.

Usar el comando 1 con el parámetro de dirección

Si usa el comando l con el parámetro de dirección, el depurador cargará el contenido del archivo o sector especificado comenzando en la ubicación de la memoria DIRECCIÓN.

Utilice el comando l con todos los parámetros

Si utiliza el comando l con todos los parámetros, Debug cargará el contenido del sector del disco especificado en lugar de cargar el archivo.

Carga el contenido de un sector específico. Lee cada sector en el rango especificado desde la unidad. La depuración se carga desde el principio hasta que se carga el contenido del número de sectores especificados.

Cargando archivos .exe

El depurador ignora el parámetro de dirección de los archivos .exe. Si especifica un archivo .exe, Debug reubicará el archivo en la dirección de carga especificada en el encabezado del archivo .exe. El encabezado del archivo en sí se separa del archivo .exe antes de cargarlo en la memoria, por lo que el tamaño del archivo .exe en el disco es diferente al de la memoria. Si desea examinar todo el archivo .exe, cambie el nombre del archivo con una extensión diferente.

Abrir archivos hexadecimales

La depuración considera que los archivos con extensión .hex están en formato hexadecimal. Escriba el comando l sin argumentos para cargar el archivo hexadecimal comenzando en la dirección especificada en el archivo hexadecimal.

Si escribe el comando l con un argumento de dirección, Debug agrega la dirección especificada a la dirección en el archivo hexadecimal para determinar la dirección inicial.

++++

Depurar:M (mover)

Copia el contenido de un bloque de memoria a otro bloque de memoria.

m dirección de rango

Parámetros

rango

Especifica la dirección inicial y final del área de memoria que se va a copiar, o dirección inicial dirección y longitud.

dirección

Especifica la dirección inicial para copiar el contenido del rango.

++

Ejemplo

Supongamos que escribe el siguiente comando:

mcs:100 110 cs:500

Debug copia el contenido de la dirección CS:110 en la dirección CS:510, luego copia el contenido de la dirección CS:10F en la dirección CS:50F, y así sucesivamente hasta que el contenido de la dirección CS:100 se copia en la dirección CS:510 . El contenido de la dirección CS:100 se copia en la dirección CS:500. Para ver los resultados, utilice el comando debug d (volcado) y especifique la dirección de destino con el comando m.

++

Explicación

El impacto de la operación de copia en los datos existentes

Si los nuevos datos no se escriben en el copiado dirección de bloque, los datos de origen permanecen sin cambios. Sin embargo, si el bloque de destino ya contiene datos (como en una operación de copia de sobrescritura), estos datos se sobrescribirán. (La operación de copia de sobrescritura significa que parte del contenido del bloque de datos de destino cubre parte del contenido del bloque de datos original).

Realizar una operación de copia de sobrescritura

El comando m realiza una operación de copia de sobrescritura en la dirección de destino sin perder datos. Primero se copiará el contenido de la dirección sobrescrita. Por lo tanto, si desea copiar datos de una dirección de orden superior a una dirección de orden inferior, la operación de copia comenzará desde la dirección de orden más bajo del bloque de datos original y luego se copiará a la dirección de orden más alto. Por el contrario, si desea copiar datos de una dirección inferior a una dirección superior, la operación de copia comienza desde la dirección más alta del bloque original y luego copia a la dirección más baja.

++++

Depuración:N (nombre)

Especifica el nombre del archivo ejecutable para depurar l (carga) o w (escritura) comando o especifique parámetros para el archivo ejecutable que se está depurando.

n [unidad:][ruta] nombre de archivo

Para especificar parámetros para el archivo ejecutable que se está probando, utilice la siguiente sintaxis:

n file-parameters

parámetros

Sin parámetros, el comando n borra la especificación actual.

[unidad:][ruta] nombre de archivo

Especifica la ubicación y el nombre del archivo ejecutable que se va a probar.

file-parameters

Especifica parámetros y modificadores para el archivo ejecutable que se va a probar.

Para obtener información sobre cómo cargar un archivo o el contenido de un sector de disco específico en la memoria, haga clic en Depurar L en la lista de temas relacionados.

Para obtener información sobre cómo escribir archivos depurados en el disco, haga clic en Depurar W (Escribir) en la lista de temas relacionados.

++

Ejemplo

Supongamos que se inicia el depurador, se carga el programa que se está depurando, Prog.com, y usted decide especificar dos parámetros para Prog.com y ejecute el programa. Aquí está la secuencia de comandos para este ejemplo:

debug prog.com

nparam1 param2

g

En este caso, Debug The El comando g ejecuta el programa como si hubiera escrito los siguientes comandos en el símbolo del sistema de Windows 2000:

prog param1 param2

Por lo tanto, las pruebas y la depuración reflejan el entorno operativo típico de Prog.com. .

En la siguiente secuencia de comandos, el primer comando n especifica File1.exe como el archivo para el siguiente comando l (cargar), que carga File1.exe en la memoria. El segundo comando n especifica los parámetros que utilizará File1.exe. Finalmente, el comando g ejecutará el archivo File1.exe como si ingresara File1 File2.dat File2.dat en la línea de comando de Windows 2000.

nfile1.exe

l

nfile2.dat file3.dat

g

Nota

- No utilice el comando l después de la segunda forma del comando n. También tenga en cuenta que si ahora utiliza el comando w (escribir), Windows 2000 guardará el archivo que está depurando, Archivo1.exe, como Archivo2.dat. Para evitar esto, utilice siempre la primera forma del comando n antes del comando l o w.

++

Descripción

Dos formas de utilizar el comando n

Hay dos formas de utilizar el comando n. Primero, puede usarlo para especificar el archivo que usarán los comandos posteriores l (carga) o w (escritura). Si no le asigna un nombre al archivo de depuración cuando inicia la depuración, debe usar el comando nfilename antes de usar el comando l para cargar el archivo. nfilename está bien formado para el bloque de control de archivos (FCB) de CS:5C. A continuación, puede utilizar el comando n para especificar argumentos y modificadores de línea de comando para el archivo que está depurando.

Área de memoria

Las siguientes cuatro áreas de memoria se ven afectadas por el comando n:

Contenido de ubicación de memoria

Control de archivos CS:5C bloque ( FCB) para el archivo 1

CS: 6C Bloque de control de archivos (FCB) para el archivo 2

CS:80 n Longitud de la línea de comando en caracteres

p >

CS:81 n carácter inicial de línea de comando

El primer nombre de archivo especificado para el comando n se colocará en el FCB en CS:5C. n El número de caracteres escritos en la línea de comando (excepto el primer carácter n) se almacena en la ubicación CS:80. n Los caracteres reales en la línea de comando (nuevamente, excepto la letra n) se almacenan a partir de CS:81. Tenga en cuenta que estos caracteres pueden ser cualquier modificador y delimitador que sea válido en los comandos escritos en el símbolo del sistema de Windows 2000.

++++

Depuración:O (salida)

Envía el valor del byte al puerto de salida.

o puerto byte-valor

Parámetros

puerto

Especifica el puerto de salida por dirección. Las direcciones de puerto pueden ser valores de 16 bits.

valor de byte

Especifica el valor de byte que apunta al puerto.

Para obtener información sobre cómo leer valores de bytes de los puertos de entrada, haga clic en Depurar I (Entrada) en la lista de temas relacionados.

++

Ejemplo

Para enviar el valor del byte 4Fh al puerto de salida en la dirección 2F8h, escriba el siguiente comando:

o2f8 4f

++++

Depuración:P (ejecutar)

Ejecutar un bucle, repetir una instrucción de cadena, una interrupción de software o una subrutina o rastrear cualquier; otras instrucciones.

p [= dirección] [número]

Parámetros

=dirección

Especifica la ubicación de la primera instrucción que se ejecutará. Si no se especifica ninguna dirección, la dirección predeterminada es la dirección actual especificada en el registro CS:IP.

número

Especifica el número de instrucciones que se ejecutarán antes de que el control se devuelva al depurador. El valor predeterminado es 1.

Para obtener información sobre cómo ejecutar el programa actualmente en la memoria, haga clic en Depuración G en la lista de temas relacionados.

Para obtener información sobre la ejecución de instrucciones, haga clic en Depurar T (Seguimiento) en la lista de temas relacionados.

++

Ejemplo

Supongamos que el programa bajo prueba contiene una instrucción de llamada en la dirección CS:143F. Para ejecutar la subrutina en el destino de la llamada y devolver el control al depurador, escriba el siguiente comando:

p=143f

El depurador muestra los resultados en el siguiente formato:

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI =0000

DS=2246 ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC

2246:1442 7505 JNZ 144A

++

Descripción

Transferir el control a la Prueba programa

Cuando el comando p transfiere el control del depurador al programa bajo prueba, el programa se ejecutará ininterrumpidamente hasta que se complete el bucle, repita la instrucción de cadena, la interrupción del software o la subrutina en la dirección especificada, o hasta que se complete una Se ejecuta un número específico de instrucciones de máquina. El control regresa al depurador.

Restricciones en los parámetros de dirección

Si

上篇: Ayuda a que la tarjeta de red centos 7 intel 210 pierda muchos paquetesPaso 1, prepare el entorno: 1. Verifique si admite virtualización Centos6.2_x864 KVM requiere soporte de CPU (Intelvmx o AMDsvm) antes de instalar KVM Compruebe si la CPU admite tecnología virtual: se muestran egrep'^flags.*(vmx|svm)'/proc/cpuinfo y todos muestran que el procesador tiene la función VT 2. Compruebe si el BIOS tiene la virtualización habilitada 2. Instalación relacionada con el software KVM 1. Simplemente copie (primero confirme si la configuración de yum es normal) yuminstallkvmkmod-kvmqemukvm-qemu-imgvirt-viewervirt-managerlibvirtlibvirt-viewervirt-managerlibvirtlibvirt-pythonpython-virtinst 2. Verifique si el módulo kvm se ha instalado [raíz @localhost~]#lsmod | grepkvm kvm_intel5549632 kvm3377721kvm_intel 3. Inicie el servicio e inicie /etc/init.d/libvirtd chkconfiglibvirtdon # Lo anterior es el proceso de instalación de KVM, que es muy simple. Pero necesitamos instalar el sistema y ocasionalmente configurarlo a través del escritorio. Por lo tanto, necesitamos instalar el escritorio del lado del servidor: Gnome IV. Instale el escritorio gonme y configure el escritorio VNC para conectarse al servidor virtual 1. Instale el escritorio del servidor virtual yum-ygroupinstall "Gnome" "Desktop" Si el escritorio no está instalado, se producirá un error al iniciar sesión usando svn: 2. Instalar el software del servidor VNC yum-yinstallvnc* vnc-server* 3. Modifique el archivo de configuración principal de VNCServer vim/etc/sysconfig/vncservers, salte al final y elimine los caracteres de comentario en la penúltima línea, y luego modifíquelo de la siguiente manera VNCSERVERS= "1:root" 4. Utilice vncpasswd para configurar la contraseña de inicio de sesión de VNC, como se muestra a continuación: Ingrese la contraseña dos veces [root@localhost~]#vncpasswd Contraseña: Verificación: [root@localhost~]# La contraseña se generará en el directorio raíz del host. Se creará un directorio oculto que comienza con .vnc y los archivos en este directorio serán el archivo de configuración del escritorio VNC del usuario raíz. Abra xstartup Configure el escritorio #vim/root/.vnc/xstartup Cambie la última línea a gnome Esto habilitará el escritorio gnome 6. Inicie el servicio vncserver y configúrelo para iniciar /etc/init.d/vncserverstart chkconfigvncserveron 7. Si desea comenzar A través del cliente VNC para conectarse al servidor virtual, descargue un pequeño cliente VNC, como se muestra a continuación: Ingrese la IP y el puerto configurados al configurar el servidor VNC. Los resultados son los siguientes: V. Configure el puente de red. Se puede usar una vez completada la instalación, pero la máquina virtual no puede comunicarse con el exterior y solo puede comunicarse con el servidor virtual dentro de la máquina virtual. Si necesita comunicarse con un servidor externo, configurar un puente es muy sencillo. 下篇: En el ranking de profesiones que buscan proteger el amor eterno, ¿cuáles están más arriba?