Comandos más complicados/útiles para el depurador gdb [cerrado]
Pregunta
¿Puedes publicar tus comandos más complicados y útiles mientras ejecutas un depurador como gdb o dbx?
Solución
- rastreo completo:Rastreo completo con variables locales.
- arriba, abajo, marco:Moverse a través de marcos
- mirar:Suspender el proceso cuando se cumpla una determinada condición.
- Establecer impresión bonita en:Imprime el código fuente C con un bonito formato.
- configurar el inicio de sesión:Registre la sesión de depuración para mostrársela a otros en busca de soporte
- establecer matriz de impresión en:Bonita impresión de matriz
- finalizar:Continuar hasta el final de la función.
- permitir y desactivar:Activar/desactivar puntos de interrupción
- romper:Romper una vez y luego eliminar el punto de interrupción
- dónde:Número de línea que se está ejecutando actualmente
- información local:Ver todas las variables locales
- argumentos de información:Ver todos los argumentos de la función
- lista:ver fuente
- romper:interrumpir la función que coincide con la expresión regular
Otros consejos
GDB de inicio con una interfaz de usuario textual
gdb -tui
A partir de GDB 7.0, hay reversible depuración , por lo que su nuevo favorito los comandos son:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
En lugar de lanzar con el BGF "-tui" param también se puede cambiar al modo de texto después de un tiempo usando escribiendo "WH".
thread apply all bt
o thread apply all print $pc
:. Para encontrar rápidamente lo que están haciendo todas las discusiones
Por ejemplo las macros definidas en stl-views.gdb
El uso de la opción -command=<file with gdb commands>
mientras se dispara hasta el BGF. Igual que -x <command file>
. Este archivo de comandos puede contener comandos de GDB como puntos de ruptura, opciones, etc. útil en caso de un ejecutable en particular tiene que ser puesto a través de depuración sucesivas corridas usando GDB.
GDB scripting es un buen truco, aparte de eso me gusta planificador conjunto de bloqueo de encendido / apagado para impedir la ejecución de otros hilos cuando estás entrar en uno.
En lugar de comenzar GDB con la opción -tui ver un proceso secundario que contiene una pantalla que pone de relieve en la línea de la ejecución de código está en su programa, saltar y salir de esta función con C-x o y C-x a. Esto es útil si usted está utilizando la función y lo que temporalmente no utilizarlo para que pueda utilizar la flecha hacia arriba para obtener un comando anterior.
- Con .gdbinit (puesta en marcha de archivos donde se puede escribir macros y llamar desde BGF). .Gdbinit lugar en su directorio personal para que se recoge cada vez que se carga gdb
-
Hilos Información para enumerar todos los hilos activos, y f (#) -> número # hilo que desea cambiar a
-
en algún momento yo uso GDB convertir de hexadecimal a decimal o binario, es muy práctico en lugar de abrir una calculadora
- p / d 0x10 -> da equivalente decimal de 0x10
- p / t 0x10 -> equivalente binario de 0x10
- p / x 256 -> hex equivalente de 256
Esto puede ser útil, estoy seguro de que podría mejorarse sin embargo, ayudar bienvenidos:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
Para STL depurar, agregar contenido a .gdbinit, siga estas instrucciones:
http://www.yolinux.com/TUTORIALS/GDB-Commands. html # STLDEREF