Depurar con la herramienta idbx

Instrucciones para utilizar la herramienta idbx para depurar un programa desde la línea de mandatos.

Acerca de esta tarea

El usuario puede ejecutar la herramienta idbx invocando el mandato "idbx" en el indicador de mandatos. Esto permitirá al usuario depurar un programa sin utilizar un entorno de trabajo de interfaz de usuario.

$ idbx testProg
Lista de mandatos
assign <variable> = <expresión>
Asignar el valor de la expresión a la variable.
clear <número-línea>
Eliminar todos los puntos de interrupción y rastreos en un número de línea dado.
Nota: Vea también delete.
cont <número-señal>
cont <nombre-señal>
Continuar la ejecución desde donde se detuvo. Si se especifica una señal, el proceso continúa como si hubiera recibido la señal. De lo contrario, el proceso continúa como si no se hubiera detenido.
delete <número-estado>
delete all
delete tskip [ for t<número-hebra> ]
Se eliminan los rastreos o las detenciones correspondientes a los números dados o el recuento de tskip restante para la hebra especificada. Los números asociados con rastreos, detenciones y los recuentos de tskip de hebra restantes se pueden imprimir con el mandato "status".
disable <número-estado>
disable
Se inhabilitan los rastreos o las detenciones correspondientes a los números dados. Los números asociados a los rastreos y las detenciones se pueden imprimir con el mandato "status".
down
down <recuento>
up
up <recuento>
Subir o bajar la función actual, que se utiliza para resolver nombres, un número <recuento> de niveles en la pila. El <recuento> predeterminado es uno.
enable <número-estado>
enable all
Se habilitan los rastreos o las detenciones correspondientes a los números dados. Los números asociados a los rastreos y las detenciones se pueden imprimir con el mandato "status".
goto <número-línea>
goto "<nombre-archivo>" : <número-línea>
gotoi <dirección>
Cambiar contador de programa a <dirección> o a una dirección cerca de <número-línea>. La variable unsafegoto debe establecerse si se desea un goto fuera de la función actual.
help
help [> <nombre-archivo> ]
help <mandato> [> <nombre-archivo> ]
help <tema> [> <nombre-archivo> ]
Imprimir información sobre el mandato o el tema. (Puede abreviarse la serie que describe un tema.) Se pueden paginar los mensajes largos utilizando el alias "pg" predeterminado. Por ejemplo: "pg" (help set_variables).
Nota: "pg" no está soportado actualmente.
Nota: La redirección a un archivo no está soportada actualmente.
list [ <número-línea-fuente> [, <número-línea-fuente> ]]
list <procedimiento>
Lista las líneas en el archivo origen actual desde el primer número de línea al segundo ambos inclusive. Si no se especifican líneas, se listan las 10 líneas siguientes. Si el nombre de un procedimiento o una función, se listan las líneas n-k a n+k donde n es la primera sentencia del procedimiento o la función y k está definido por listwindow.
listi
listi [ <dirección> [ , <dirección> ]]
listi at <número-línea-fuente>
listi <procedimiento>
Listar las instrucciones de la ubicación del contador de programa actual o la dirección dada, el número de línea o el procedimiento dados. El número de instrucciones impreso lo controla la variable interna de dbx listwindow.
move <número-línea-fuente>
Cambiar la línea siguiente a visualizar por el mandato list a número-línea-fuente
next
next <recuento>
Ejecutar hasta la línea siguiente. Si se proporciona un recuento, ejecutar ese número de líneas siguientes. La diferencia entre esto y "step" es que si la línea contiene una llamada a un procedimiento o a una función, el mandato "step" se detendrá al principio de ese bloque, mientras que el mandato "next" no lo hará.
nexti
nexti <recuento>
Un solo paso como en "next", pero realizar una sola instrucción en lugar de una línea fuente. Si se proporciona un recuento, ejecutar ese número de instrucciones siguientes.
print <expresión> [ , <expresión> ]
print <procedimiento (<parámetros>)
Imprime el valor de la expresión especificada. Los valores de registros generales y de registros de coma flotante también se pueden imprimir mediante este mandato.
"print <procedimiento> (<parámetros>)" ejecuta el código de objeto asociado al procedimiento e imprime el valor de retorno.
Los nombres se resuelven primero mediante el ámbito estático de la función actual y a continuación se utiliza el ámbito dinámico si el nombre no está definido en el ámbito estático. Si las búsquedas estática y dinámica no proporcionan un resultado, se elige un símbolo arbitrario y se imprime el mensaje "[utilizando <nombre-calificado>]". El procedimiento de resolución de nombres se puede sobrescribir calificando un identificador con un nombre de bloque, p. ej. "variable.módulo". Para C, los archivos fuente se tratan como módulos llamados por el nombre de archivo sin ".c"
prompt
prompt "serie"
Visualiza la solicitud dbx o cambia la solicitud a "serie".
quit
Salir de dbx (programa terminado).
registers
Imprime el contenido de todos los registros generales, los registros de control del sistema, los registros de coma flotante y el registro de instrucción actual. Para visualizar registros de coma flotante, utilice el submandato de dbx "unset noflregs".
Los registros se pueden visualizar o asignar individualmente mediante los nombres de registro predefinidos siguientes: r0 a través de $r31 para los registros de propósito general, fr0 a $fr31 para los registros de coma flotante, sp, iar, cr, link para, respectivamente, el puntero de pila, el contador del programa, el registro de condiciones y el registro de enlaces.
run [<argumentos>] [< <nombre-archivo> ] [> <nombre-archivo> ]
[>> <nombre-archivo> ] [>! <nombre-archivo> ]
[2> <nombre-archivo> ] [2>> <nombre-archivo> ]
[>& <nombre-archivo> ] ]>>& <nombre-archivo> ]
rerun [<argumentos>] [< <nombre-archivo> ] [> <nombre-archivo> ]
[>> <nombre-archivo> ] [>! <nombre-archivo> ]
[2> <nombre-archivo> ] [2>> <nombre-archivo> ]
[>& <nombre-archivo> ] ]>>& <nombre-archivo> ]
Empezar a ejecutar el archivo de objeto, pasar argumentos como argumentos de línea de mandatos; < o > se pueden utilizar para redirigir la entrada o la salida de forma parecida a shell. Cuando se utiliza "rerun" sin ningún argumento, la lista de argumentos anterior se pasa al programa; de lo contrario, es idéntico a run.
Nota: Los argumentos para los mandatos run y rerun no están soportados actualmente.
return
return <procedimiento>
Continuar hasta que se ejecuta un retorno a <procedimiento> o hasta que el procedimiento actual retorna si no se especifica ninguno.
set <nombre>
set <nombre> = <expresión>
El mandato set define valores para variables de dbx. Los nombres de estas variables no pueden presentar un conflicto con los nombres del programa que se está depurando y se expanden a la expresión correspondiente dentro de otros mandatos. Utilice "unset" para eliminar una definición de variable establecida. Vea también "help set_variables" para conocer las definiciones de variables establecidas predefinidas.
skip [<número>]
Reanudar e ignorar el punto de interrupción siguiente. Si se proporciona un "número", ignorar los "número" puntos de interrupción siguientes.
status [> <nombre-archivo> ]
status more [> <nombre-archivo> ]
Visualizar los mandatos de rastreo y detención activos actualmente con los submandatos de dbx asociados y los recuentos de tskip de hebra restantes.
step
step <recuento>
Ejecutar una línea. Si se proporciona un recuento, ejecutar ese número de líneas siguientes. La diferencia entre esto y "next" es que si la línea contiene una llamada a un procedimiento o a una función, el mandato "step" especificará ese procedimiento o esa función, mientras que el mandato "next" no lo hará.
Nota: Consulte también: set_variables stepignore.
stepi
stepi <recuento>
Ejecutar una sola instrucción. Si se proporciona un recuento, ejecutar las instrucciones de recuento siguientes.
!stop if <condición>
stop at <número-línea> ![if <condición>]
stop in <procedimiento> ![if <condición>]
!stop <variable> [if <condición>]
!stop <variable> at <número-línea> [if <condición>]
!stop <variable> in <procedimiento> [if <condición>]
!stop on load ["<módulo>"] [if <condición>]
!stop on load ["<módulo>(<miembro>)"] [if <condición>]
Detener la ejecución cuando se alcanza la línea dada, el procedimiento o la función especificados, la variable cambiada, el módulo cargado o descargado o la condición true.
Nota: ! no está soportado actualmente.
unset <nombre>
Eliminar la definición para <nombre>
whatis <nombre>
Imprimir la declaración del nombre dado.
where [startframe endframe] [> <nombre-archivo>]
Imprimir un rastreo de pila de los procedimiento y las funciones activos asociados con los números de marco startframe a endframe. Establezca stack_details para un rastreo de pila verboso.
visual <nombre-host> <número-puerto>
Adjuntar el depurador IDBX a un entorno de trabajo de interfaz de usuario en el host y el puerto especificados del daemon de la interfaz de usuario.

Comentarios