consejos GDB (5) - Cambio de ejecución del programa

La implementación de cambios de programa

   Mediante el uso de depurador GDB es colgado, cuando el programa en funcionamiento, se puede cambiar dinámicamente el valor de la línea de operación depurador o sus variables actualmente en GDB depuración de acuerdo con sus propias ideas, esta potente característica le permite mejor depuración del programa, por ejemplo, puede ejecutar el programa una vez recorrido el programa en todos los puntos

En primer lugar, modificar valores de variables

Modificar los valores de las variables se están ejecutando el depurador cuando, en el BGF muy fácil de poner en práctica, el uso de comandos de impresión del BGF para completar. Tales como:

  •     (GDB) de impresión x = 4

x = 4 esta expresión es una sintaxis de C / C ++, es decir, el valor de la variable x se cambia a 4, si se depura el idioma actual es Pascal, a continuación, puede utilizar la sintaxis de Pascal: x: = 4.

En algún momento, más probable es que el BGF variables y parámetros en el conflicto, tales como:

    (gdb) whatis width
    type = double
    (gdb) p width
    $4 = 13
    (gdb) set width=47
    Invalid syntax in expression.

Porque, ancho establecido se comandos de GDB, así, ha habido "Sintaxis inválida en la expresión" está configurado incorrectamente, esta vez, se puede utilizar el conjunto de comandos var a decir BGF, parámetro de anchura no es su BGF, pero el nombre de la variable del programa, tales como:

  •     anchura (GDB) set var = 47

   
Además, puede haber algunos casos, el BGF no informa de este error, por lo que el lado seguro, cuando se cambia el valor de las variables del programa, el mejor formato de conjunto de comandos var uso BGF.

En segundo lugar, la puesta en práctica del salto

En general, se ejecuta el depurador se ejecutan en el orden del código del programa. BGF proporciona ejecución de la orden de la función, es decir, el BGF puede modificar el orden de ejecución del programa, se puede dejar que el programa ejecute salto arbitrario. Esta función puede ser llevada a cabo por el comando de salto BGF:

  • saltar <linespec>

Especificar el punto operativo de la siguiente instrucción. <Linespce> puede ser el número de fila del archivo, el archivo puede ser: formato de línea, esto puede ser compensado formato + num. El siguiente estilo de tabla con un Iniciación práctica desde donde el comunicado.

  • salto <dirección>

Donde <dirección> es la dirección de memoria de la fila de código.

Nota, comando de salto no cambia el contenido de la pila del programa actual, por lo que cuando se salta de una función a otra función, está destinada a ser el error ocurrió durante la operación apareciendo cuando la función devuelve la carrera hasta su finalización, posiblemente, el resultado fue muy extraño , e incluso núcleo generador de volcado. Se lleva a cabo preferiblemente con una función de salto.

Recopilación de las personas familiarizadas sabe que el programa se está ejecutando, un registro contiene la dirección de memoria reside el código actual. Así, comando de salto es cambiar el valor de este registro. Por lo tanto, se puede cambiar la dirección del salto realizó con un "conjunto de $ PC". Tales como:

  • $ conjunto pc = 0x485

En tercer lugar, la cantidad de generación de una señal

    Use comandos Singal, el programa puede generar un semáforo se va a depurar. Tales como: la señal de interrupción Ctrl + C. Esto es muy conveniente para el depurador, puntos de interrupción se pueden ajustar en cualquier posición de marcha, el BGF y genera una señal por una cantidad en el punto de interrupción, que precisamente en algún lugar muy ventajoso programa de generación de señales de depuración.
   
La sintaxis es: señal <Singal>, el sistema UNIX semáforo es generalmente de 1 a 15. Así <Singal> valor también en este rango.

Different solo comando shell y comando kill, una señal de comando kill para el sistema cuando el depurador, es interceptado por la GDB, y una sola señal de orden se envía directamente al programa a ser depurado.

En cuarto lugar, el forzamiento función devuelve

Si se depura punto de interrupción en una función, y no hay ninguna declaración se ejecuta. Se puede utilizar el comando de retorno para forzar la función de hacer caso omiso de la declaración no ha sido ejecutada y devuelta.

  • regreso
  • retorno <expresión>

Utilice el comando de retorno para cancelar la ejecución de la función actual y vuelve inmediatamente si se especifica la <expresión>, entonces el valor de retorno de la expresión es reconocida como la función.

En quinto lugar, para obligar a la función de llamada

  • llamar <expr>

En primer lugar, la función de la expresión lata con el fin de lograr el propósito de obligar a la función de llamada. Y muestra el valor de retorno de la función, si el valor de retorno de la función es nula, entonces no se muestran.
   
    Otro comando similar también puede realizar esta función --print, la impresión puede ser seguido por una expresión, por lo que puede utilizarlo para llamar a las funciones de impresión, diferente y llamada, si no aparece la función devuelve vacío, llamada, a continuación, imprimir pantallas funcionan valores de retorno, y los valores se almacenan en los datos históricos.

Uso BGF en diferentes idiomas

GDB soporta los siguientes idiomas: C, C ++, Fortran, Pascal, Java, Chill, montaje, y Modula-2. En general, el BGF determinará el curso de la depuración de la lengua según su depuración de programas, tales como: encontrar sufijo de nombre de archivo ".c" es, GDB se considerará un programa C. Nombre del archivo sufijo ".C, .cc, .cp, .cpp, .cxx, .c ++" es, GDB se considerará un programa en C ++. El sufijo es ".f, .F" es, el BGF será considerado como un programa de Fortran, y, si es el sufijo ".s, .S" será considerado como el lenguaje ensamblador.

En otras palabras, el BGF se basará en el idioma que se está depurando un programa, configurar su propia localidad, y dejar que los comandos de GDB a seguir para cambiar el idioma en el cambio medio ambiente. Por ejemplo, cuando algunos de los comandos de GDB tienen que utilizan expresiones o variables, la sintaxis de estas expresiones o variables, se basa enteramente en la localización actual cambiado. Por ejemplo, la sintaxis C / C ++ es un puntero * p, en el Modula-2 es p ^. Y, si su programa actual se compila en varios idiomas diferentes entre sí, y que en el proceso de depuración, el BGF puede cambiar automáticamente en función del idioma local. Esto siguió a la configuración regional y cambiar la función del desarrollo de una diseñadores muy bien pensadas.


Aquí están algunos relacionados con comando locale BGF:

  • espectáculo de lenguaje

    Ver la localización actual. BGF no puede saber si está depurando lenguaje de programación, entonces, el lenguaje C se considera que es el entorno por defecto.
   

  • información marco

    Ver lenguaje de programación de la función actual.
   

  • fuente de información

        Ver el lenguaje de programación archivo actual.
   
Si BGF no detecta el lenguaje de programación actual, entonces también se puede configurar manualmente el lenguaje de programación actual. El uso conjunto de comandos de lenguaje puede hacer.

Cuando el comando de idioma ajustado no hace nada con él, se puede ver el BGF lenguaje soportado:

    (gdb) set language
    The currently understood settings are:
   
    local or auto    Automatic setting based on source file
    c                Use the C language
    c++              Use the C++ language
    asm              Use the Asm language
    chill            Use the Chill language
    fortran          Use the Fortran language
    java             Use the Java language
    modula-2         Use the Modula-2 language
    pascal           Use the Pascal language
    scheme           Use the Scheme language

Para que pueda mantenerse al día con el programa que se enumeran a continuación del nombre de la lengua conjunto de idioma, para establecer la localización actual.

posdata

    GDB es una poderosa herramienta de depuración de línea de comandos. Todos sabemos que la línea de comandos es de gran alcance, ya que puede formar secuencia de ejecución, forma de guión. software UNIX es una línea de comandos completa, lo que da al desarrollo de programas para las generaciones por mencionar una gran comodidad, las ventajas del software de línea de comandos que pueden ser fácilmente integrados con unos pocos comandos sencillos utilizando las herramientas existentes, se puede hacer una característica muy potente.
   
    Así, bajo el software UNIX más orgánica que el software en Windows, jugar a sus respectivos puntos fuertes, combinados en funciones más potentes. El software de gráficos para Windows es básicamente su propio negocio, no se puede llamar a los demás, no es propicio para la integración mutua de los distintos programas informáticos. Aquí no es hacer una comparación de lo que Windows y el llamado "pulgadas de un director, tiene un pie corto", una herramienta gráfica o un lugar tan bueno como la línea de comandos. (Cuando veo esto, espero que diez millones no podía creer que estaba "despreciado interfaz gráfica", y me molesta)
   
    escribí el artículo basado en GDB versión 5.1.1, lo que puede haber alguna función se ha modificado o tener funciones más potentes. Y escribo muy corto, y escrito relativamente simple, y donde he visto un número de errores tipográficos (utilizo Wubi, así que vamos errata no se puede leer), así que estoy aquí para expresar mi propio texto del error disculpas.
   
    Cuando en el presente documento una lista de funciones del BGF, que acabo de enumerar algunos de los comandos de GDB y cinta de uso, de hecho, estoy aquí sólo acerca de la función de sólo aproximadamente el 60% del BGF todas las características de la misma, se detalla la documentación, o salgo BGF ayuda y manuales que, tal vez, con el tiempo, si tengo tiempo, voy a escribir un uso avanzado del BGF.
   
    Personalmente, me gusta la función de depuración automática del BGF, esta función es muy potente, imaginar, escribí un guión en UNIX, el script compila automáticamente mi programa, es automáticamente depuración, y reportar los resultados salieron, la exitosa puesta en marcha, automática biblioteca de código de registro. Un comando, compilar con la depuración, tienen un registro, fue genial. GDB para la depuración de la automatización es en la actualidad sólo el apoyo no es muy maduro, sólo puede lograrse semiautomática, y realmente esperamos que la automatización sofisticada cuenta de GDB depuración.
   


fuente original: https: //blog.csdn.net/haoel/article/details/2885

 

 

 

 

Publicados 175 artículos originales · ganado elogios 262 · vistas 700 000 +

Supongo que te gusta

Origin blog.csdn.net/li_wen01/article/details/105224612
Recomendado
Clasificación