2011-01-12 51 views
24

He buscado documentación sobre esto y no he encontrado nada. Tengo MinGW instalado y funciona muy bien. Simplemente no sé cómo usar el depurador.¿Cómo uso el depurador mingW gdb para depurar un programa C++ en Windows?

dado un poco de código simple, dicen en un archivo llamado "mycode.cpp":

int main() 
{ 
    int temp = 0; 

    for (int i = 0; i < 5; ++i) 
     temp += i; 

    return 0; 
} 

... ¿cómo iba a depurar este. ¿Cuáles son los comandos que uso para depurar código con MinGW y GDB en Windows? ¿Puedo recorrer el código a través de la línea de comando como en Visual Studio? Si es así, ¿qué comandos uso para hacer eso?

¿Hay algún tutorial para usar GDB? No pude encontrar ninguno, pero si alguien podría dirigirme a uno que sería genial también. Estoy cansado de escribir toneladas de declaraciones std::cout para depurar código complejo.

Respuesta

37

El primer paso es compilar el programa con -g para incluir información de depuración en el ejecutable:

g++ -g -o myprog.exe mycode.cpp 

A continuación, el programa puede ser cargado en gdb:

gdb myprog.exe 

Unos comandos para obtener que comenzó:

  • break main hará que el depurador se rompa cuando se llame al main. También puede interrumpir líneas de código con break FILENAME:LINENO. Por ejemplo, break mycode.cpp:4 se rompe la ejecución cada vez que el programa llega a la línea 4 de mycode.cpp.
  • start inicia el programa. En su caso, debe establecer puntos de interrupción antes de iniciar el programa, ya que se cierra rápidamente.

En un punto de interrupción:

  • print VARNAME. Así es como se imprimen los valores de las variables, ya sean locales, estáticas o globales. Por ejemplo, en el bucle for, puede escribir print temp para imprimir el valor de la variable temp.
  • step Esto es equivalente a "entrar".
  • next o adv +1 Avance a la siguiente línea (como "paso sobre"). También puede avanzar a una línea específica de un archivo específico con, por ejemplo, adv mycode.cpp:8.
  • bt Imprimir una traza inversa. Este es un rastro de pila, esencialmente.
  • continue Exactamente como una operación "continuar" de un depurador visual. Hace que la ejecución del programa continúe hasta el próximo punto de interrupción o hasta que el programa finalice.

Lo mejor para leer es GDB users' manual.

+2

Unos más comandos debe estar familiarizado con: 'run',' continue', 'próximo ',' list' y 'help'. Cuando todo lo demás falla, intente usar 'help'. –

+0

Gracias. Exactamente lo que necesitaba. –

+0

intentado 'g ++ -g helloworld.c', generó solo a.exe. Se supone que debe generar algunos archivos más para ayudar a la depuración con gdb. Al ejecutar 'gdb a.exe' aparece el mensaje:' no en formato ejecutable: formato de archivo no reconocido' e inicia el comando '(gdb)'. Ejecutando '(gdb) break main' da' No se carga ninguna tabla de símbolos. Use el comando "archivo". Ejecutando '(gdb) start' da el mismo' No se carga tabla de símbolos. Use el comando "archivo". ¿Qué mal estoy haciendo? – Mahesha999

Cuestiones relacionadas