2008-11-26 11 views
21

Escribí un código erróneo que ocasionalmente falla ... y crea un archivo stackdump.Usando un stackdump desde el ejecutable de Cygwin

Utilizando addr2line puedo deducir cómo el programa llegó al punto de fallo decodificando las direcciones en una. ¿Existe alguna herramienta alternativa que pueda facilitar la depuración mediante el uso de volcados de pila? ¿Hay alguna forma de cargar esta información en Insight/Gdb?

Respuesta

40

Puede indicarle a Cygwin que inicie su depurador gdb justo a tiempo cuando ocurre una falla. Para lograr esto, añadir error_start=action a la variable de entorno Cygwin:
export CYGWIN="$CYGWIN error_start=gdb -nw %1 %2"

cosa que se pueda tener Cygwin generar un volcado de memoria real.
export CYGWIN="$CYGWIN error_start=dumper -d %1 %2"

+1

de pista muy útil –

+3

y ejecute 'ruta GDB/a/la ruta/binario/a/la/core' para depurarlo. Gracias a http://stackoverflow.com/a/5115653/204658. – thoni56

+0

Con esta opción 'error_start = gdb -nw% 1% 2' habilitada, tengo gdb en ejecución, sin embargo, al salir de gdb solo resulta que comienza de nuevo, ¿cómo lo dejé completamente? – CMCDragonkai

-1

En primer lugar, asegúrese de que usted construye con la depuración fuente activada (con la opción -g):

gcc -g -o myfile myfile.c 

luego cargar el volcado en GDB después del accidente (o visión, o DDD)

gdb myfile core 
+17

STACKDUMP! = 1 Coredump – Gerhard

Cuestiones relacionadas