2011-04-28 10 views
13

Estoy tratando de depurar un programa de Windows compilado utilizando el gcc de MinGW que solo segfaults cuando se ejecuta fuera de de gdb (probablemente alguna condición de carrera ... encantadora.) El problema es cuando el programa falla y no estoy ejecutando GDB, no puedo obtener un seguimiento de pila ... Tengo la opción de abrir el programa en MSVC cuando falla, pero MSVC no puede leer los símbolos de depuración de gcc, por lo que el seguimiento de pila que me da es inútil.¿hay alguna manera de generar un coredump legible gdb cuando se ejecutan programas compilados con MinGW?

¿Hay alguna manera de hacer que Windows cree un volcado del núcleo que luego pueda abrir en el gdb de MinGW? Alternativamente, ¿hay alguna manera de tomar el seguimiento de la pila de MSVC (que tiene direcciones sin formato pero sin símbolos) y usar gcc para obtener un seguimiento legible por humanos?

Respuesta

8

ventanas no crea archivos principales (en Linux que se vierten por el IIRC núcleo) se puede tratar de conectar con gdb con el diálogo de error abierto pero dudo que va a funcionar

si utiliza msvc vez que puede crear un depurable minidump en VisualStudio pero no hay manera de crear misma volcado con gcc

Google hizo un software que puede resultar útil, pero no estoy seguro de que puede producir material con gcc

http://code.google.com/p/google-breakpad/

o puede establecer drmingw como depurador JIT

drmingw -i 

Estoy seguro de que es posible obtener algo así como una traza inversa también de MinGW, ya MinGW compilado llvm es capaz de volcar un rastro

http://code.google.com/p/backtrace-mingw/

parece simple pero no lo he probado

compila con -g3 (y si se puede -O0)

+0

backtrace-mingw se ve perfecto, pero no puedo conseguir que se base en mi sistema mingw64. ya existe un problema en la exportación de github aquí https://github.com/cloudwu/backtrace-mingw –

+0

drmingw está funcionando muy bien, gracias. –

Cuestiones relacionadas