2012-08-27 14 views
8

Duplicar posible:
Bidirectional (or reverse) debugging¿Hay un depurador que me permita retroceder en el código?

he mirado el Omnisciente depurador (http://www.lambdacs.com/debugger/ODBDescription.html), pero es específica para Java. ¿Hay algún depurador con esta misma funcionalidad para las aplicaciones nativas, es decir, C/C++?

No me he aclarado. Me gustaría dividir los valores de datos falsos/rutas de código, y luego "retrotraer", depurar hacia atrás, hasta que encuentre el error en el código/lógica/diseño.

Sé que puedo depurar paso a paso "hacia adelante", quiero hacer lo mismo al revés, por lo que el depurador tendría que guardar su contexto en cada paso.

+1

Creo que gdb puede hacer esto. Simplemente agregue -g a sus indicadores de compilación – Wug

+0

Muchos (¿todos?), Los entornos de desarrollo basados ​​en IDE tienen un depurador integrado que puede mostrar los marcos de pila, (locales, devoluciones de funciones), por línea de código fuente. Luego está gdb para cosas de línea de comandos ... –

+0

Esa es una de las principales funciones de cualquier depurador. ¿Qué depuradores has mirado? Hay una lista en Wikipedia que puedes consultar. –

Respuesta

8

Además de los rastreos de la pila para examinar las instrucciones anteriores ya mencionadas aquí en objetivos x86 gdb más reciente también es compatible con recorded program execution and stepping backwards que debe acercarse bastante a lo que está buscando.

2

Creo que debería usar GDB para C/C++. Tiene algunas opciones de rastreo de pila y podrá establecer puntos de interrupción en su programa y ejecutarlos paso a paso.

Consulte en http://www.cs.cmu.edu/~gilpin/tutorial/#3.5 o encuentre otros tutoriales en la web.

Espero que ayude.

+2

@templatetypedef Esta respuesta fue dada antes de retroceder fue editada como requisito (suspiro), aunque en realidad GDB * does * admite esto (requiere GDB> = 7): http://sourceware.org/gdb/wiki/ReverseDebug –

-2

Para Linux GDB se recomienda, mientras que para Windows windbg es mejor.

+1

Pasé mucho tiempo haciendo que WinDbg trabajara con mi proyecto actual, solo para descubrir que no es compatible con la depuración inversa. – David

6

versión GDB 7.0 (debido septiembre de 2009) será la primera versión pública de GDB para apoyar la depuración inversa (la capacidad de hacer el paso de programa está depurando y continuar en revertir)

Adición:

Visual Studio 2010 y soportes superiores "histórico depuración" ("IntelliTrace"):

+0

Visual Studio solo puede hacer esto para aplicaciones .NET escritas en C# o Visual Basic. Como dice el artículo, "IntelliTrace no es compatible con la depuración C++" – RyanCu

0

gdb tiene comandos up n y down n para seleccionar (n) marcos up o down.

Probablemente esto puede ayudar.

Cuestiones relacionadas