2012-08-27 16 views
8

Powiel możliwe:
Bidirectional (or reverse) debuggingCzy istnieje debugger, który pozwala mi przejść wstecz przez kod?

Przyjrzeliśmy się wszechwiedzący Debugger (http://www.lambdacs.com/debugger/ODBDescription.html), ale jest to specyficzne dla Java. Czy istnieje jakiś debugger z tą samą funkcjonalnością dla natywnych aplikacji, tj. C/C++?

Nie wyjaśniłem się. Chciałbym podzielić się fałszywymi wartościami danych/ścieżkami kodu, a następnie "wycofać", debugować wstecz, aż znajdę błąd w kodzie/logice/projekcie.

Wiem, że mogę debugować krok po kroku "do przodu", chcę zrobić to samo w tył, więc debugger musiałby zapisać jego kontekst w każdym kroku.

+1

Myślę, że gdb może to zrobić. Po prostu dodaj -g do flag kompilacji – Wug

+0

Wiele, (wszystko?) Środowisk programistycznych opartych na IDE ma wbudowany debugger, który może pokazywać ramki stosów (locals, funkcje zwraca), według kodu źródłowego. Następnie jest gdb dla rzeczy z linii poleceń .. –

+0

To jedna z głównych funkcji każdego debuggera. Na których debugerów się przyglądałeś? Na Wikipedii znajduje się lista, którą możesz sprawdzić. –

Odpowiedz

2

Myślę, że powinieneś użyć GDB dla C/C++. Masz kilka opcji śledzenia stosu i będziesz mógł ustawić punkty przerwania w swoim programie i uruchamiać go krok po kroku.

Sprawdź na stronie http://www.cs.cmu.edu/~gilpin/tutorial/#3.5 lub znajdź inne samouczki w Internecie.

Mam nadzieję, że to pomaga.

+2

@templatetypedef ta odpowiedź została podana przed krokiem wstecz była edytowana jako wymaganie (westchnienie), chociaż faktycznie GDB * nie * obsługuje to (wymaga GDB> = 7): http://sourceware.org/gdb/wiki/ReverseDebug –

-2

Dla linuxa GDB zasugerowano, natomiast dla systemu Windows windbg jest lepszy.

+1

Spędziłem mnóstwo czasu, aby program WinDbg działał z moim bieżącym projektem, tylko po to, aby przekonać się, że nie obsługuje on debugowania wstecznego. – David

6

wersja GDB 7.0 (z powodu września 2009 roku) będzie pierwsze publiczne wydanie z gdb wspierania odwrotnej debugowanie (zdolność do programu debugowany krok i kontynuowania reverse)

Uzupełnienie:

Visual Studio 2010 i wyższe podpory "Historyczne Debugging" ("IntelliTrace"):

+0

Visual Studio może to zrobić tylko dla aplikacji .NET napisanych w języku C# lub Visual Basic. W artykule napisano: "IntelliTrace nie obsługuje debugowania C++" – RyanCu

0

gdb ma nie komend up n i down n aby wybrać (n) ramki up lub down.

Prawdopodobnie to może pomóc.

Powiązane problemy