2009-09-24 7 views

Respuesta

126
  1. traza completa: traza completa con variables locales
  2. hasta, abajo, marco: Mover a través de marcos
  3. reloj: suspender el proceso cuando se cumple una determinada condición
  4. impresión de conjunto bastante en: Imprime graciosamente con formato de código fuente en C
  5. establecer el registro en: registro de la sesión de depuración para mostrar a los demás para el apoyo
  6. La matriz de conjuntos de impresión en: array Bastante impresión
  7. acabado: Continuar hasta el final de la función
  8. activar y desactivar : Enab LE/desactivar los puntos de interrupción
  9. TBREAK: romper de una vez, y luego eliminar el punto de interrupción
  10. donde: en la actualidad el número de línea se ejecuta
  11. información locales: Ver todas las variables locales
  12. información args : Ver todos los argumentos de función
  13. lista: ver fuente
  14. RBREAK: rotura en función de concordancia de expresiones regulares
+5

'info locals' - Ver todas las variables locales; lista - ver fuente; rbreak - interrupción de la función que coincide con la expresión regular. –

+0

source/path/to/macro/file Y todas mis ingeniosas macros están ahí para ayudarme a depurar en segundos. – Sudhanshu

+1

'set print object on' para elementos polimórficos y' set print elements 0' son dos comandos que uso muy a menudo. Bastante útil. –

13

thread apply all bt o thread apply all print $pc: Para encontrar rápidamente lo que todos los temas están haciendo.

+0

¡Ese era el comando que estaba buscando desde hace mucho tiempo! ¡Es desagradable comprobar los 30 hilos uno por uno! – tothphu

+0

AKA: t a a bt. –

94

GDB de inicio con una interfaz de usuario textual

gdb -tui 
+18

No puedo creer que esta característica se me escapara durante todos estos años. ¡Gracias, gracias, gracias! – DevSolar

+21

o simplemente C-x C-a – elmarco

+0

Gracias Has ahorrado gran parte de mi tiempo ... Wonderfull .... – sujin

42

A partir de GDB 7.0, hay reversible debugging, por lo que sus nuevos comandos favoritos 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. 
18

En lugar de lanzar con el BGF "-tui" param también puede cambiar al modo de texto después de un tiempo escribiendo "wh".

+3

¿Cómo se puede volver? –

+3

Ctrl-a a para volver a la vista de línea de comando 'normal'! – Kevin

+2

"- 'se puede usar instaed de' wh '. Cuanto más corto mejor ... :) –

5

scripting gdb es un buen truco, aparte de eso me gusta establecer el bloqueo del programador on/off para evitar el funcionamiento de otros hilos cuando se está caminando en uno.

+1

¿Cómo se configura el bloqueo del programador? –

+3

'establecer planificador-bloqueo en' dentro de gdb – Ben

+0

¿cómo se hace esto el valor predeterminado? Lo probé .gdbinit pero gdb imprime /home/omry/.gdbinit:1: Error en el archivo de comando de origen: El objetivo 'Ninguno' no puede soportar este comando. –

3
  • Usando .gdbinit (archivo de inicio donde puede escribir macros y llamar desde gdb). .gdbinit lugar en su directorio personal para que se recoge cada vez que se carga el BGF
  • información roscas para listar 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 -> hexadecimal equivalente de 256
6

El uso de la opción -command=<file with gdb commands> mientras se dispara hasta el BGF. Lo mismo que -x <command file>. Este archivo de comandos puede contener comandos gdb como puntos de interrupción, opciones, etc. Útil en caso de que un ejecutable en particular deba pasar por sucesivas ejecuciones de depuración usando gdb.

+0

También puede usar la opción '-iex' para agregar comandos individuales en la línea de comando de gdb. – doug65536

2

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) 
4

En lugar de iniciar gdb con la opción -tui para ver un proceso secundario que contiene una pantalla que resalta dónde se encuentra la línea de código ejecutable en su programa, salte y salga de esta función con Cx o y Cx a. Esto es útil si está usando la función y qué no usarla temporalmente para que pueda usar la flecha hacia arriba para obtener un comando anterior.

+2

puede cambiar el enfoque a la ventana de comandos usando 'focus cmd' para que las flechas arriba/abajo funcionen. Usted vuelve a usar 'focus src'. –

Cuestiones relacionadas