Możesz użyć polecenia Eclipse drop to frame, aby ponownie wprowadzić bieżącą metodę od góry. Ale nie rozwinie żadnych zmian stanu, które miały miejsce, więc może nie działać w zależności od rodzaju używanej metody.
Innym naprawdę fajnym narzędziem, które faktycznie pozwala ci cofać się i naprzód w czasie, jest Omniscient Debugger . Działa poprzez instrumentowanie klas, które są ładowane do modułu ładującego klasy, dzięki czemu może rejestrować wszystko, co robi Twój kod. Potrafi robić bardzo fajne rzeczy, na przykład odpowiadać „kiedy, gdzie i dlaczego temu polu przypisano aktualną wartość?”. Interfejs użytkownika jest raczej niezgrabny i może mieć trudności z obsługą dużych baz kodu, ale w niektórych przypadkach może naprawdę zaoszczędzić dużo czasu.
Aktualizacja : Chronon dostarcza produkt komercyjny, który określa jako „DVR dla Java”, który wydaje się robić wiele takich samych rzeczy jak ODB.
Poza tym, co zostało wspomniane we wcześniejszych odpowiedziach - tj. Funkcja upuszczania do ramki Eclipse w widoku debugowania , która ponownie uruchamia debugowanie wcześniej w ramce stosu (ale nie przywraca danych globalnych / statycznych) i debuger Wszechwiedzący , który jest nieco surowy i nie tak bardzo ewoluuje - istnieje kilka narzędzi opartych na Eclipse, których można użyć do „cofnięcia się” w czasie wykonywania:
JIVE rozszerza debugger Eclipse Java o możliwość rejestrowania stanów programów. Perspektywa JIVE zawiera przydatne diagramy UML, które są aktualizowane podczas działania programu. Diagramy te zapewniają przegląd stanu aplikacji (diagram obiektów) i śladu stosu (diagram sekwencji). Możesz zapytać o zapamiętany ślad i cofnąć się i naprzód w czasie i zobaczyć odpowiednie diagramy.
Diver rejestruje tylko wywołania metod i tak naprawdę nie rejestruje stanów programów, takich jak JIVE. Każde zdarzenie wywołania metody jest przechowywane w celu późniejszego pobrania i analizy. Rozszerza konfiguracje Java Run i Debug głównie w celu określenia filtrów. Śledzenie można wstrzymać / wznowić / przefiltrować w czasie wykonywania. Po zarejestrowaniu perspektywa nurka może wyświetlić ją w interaktywnym diagramie sekwencji.
JIVE i Diver to projekty open source wydane na podstawie badań naukowych. Od listopada 2012 roku oba projekty są aktywne.
Chronon jest produktem komercyjnym, ale ma darmowe licencje dla studentów i projektów open source. Z tego, co twierdzi ich strona internetowa, jest to prawdopodobnie najbardziej wszechstronny rejestrator, ponieważ jest w stanie odtworzyć zapisaną historię, przechodzić do przodu i do tyłu, umożliwiając, jak mówią, debugowanie w czasie. Również Eclipse nie jest potrzebne do nagrywania.
Wszystkie te wtyczki są dość chciwe w zasobach, więc najlepiej mieć maszynę o dobrej specyfikacji i używać ich funkcji filtrowania. Zdecydowanym warunkiem pomyślnego ich uruchomienia jest rozszerzenie przestrzeni sterty w eclipse.ini .
W moim przypadku próbowałem użyć JIVE i Diver do debugowania programu parsującego XML, ale zawsze kończyło się to zamrożeniem zaćmienia z powodu braku zasobów. Diver może być trudny do uruchomienia na 64-bitowym systemie Linux , działa na 32- bitowym systemie Ubuntu i prawdopodobnie na innych 32-bitowych dystrybucjach korzystających z tych wskazówek . Diver działa na Windowsie, jeszcze lepiej na Windows 64-bit + 64-bit JVM, w przeciwnym razie będziesz ograniczony do maksymalnej przestrzeni sterty 1,3-1,6 Gb w 32-bitowych oknach . JIVE działa świetnie na moim 64-bitowym Linuksie i wydaje się działać dobrze na innych platformach.
źródło
Tak , Eclipse CDT obsługuje funkcję historycznego debuggera.
Otwórz konfigurację debugowania -> Debugger -> Włącz odwrotne debugowanie podczas uruchamiania .
Niż możesz nacisnąć
shift+F5
lub,shift+F6
aby cofnąć sięF5
lub zrobić krokF6
do przodu.źródło
Jestem stronniczy, ale Chronon robi dokładnie to, czego szukasz.
Upuszczenie do ramki nie jest dokładnie cofnięciem się, ponieważ jeśli metoda zmieni cokolwiek na stercie, nie zostanie to przywrócone.
źródło
Szukałem tej funkcji również w zaćmieniu. Wiem, że studio wizualne to potrafi. Właściwie możesz przeciągnąć bieżący znacznik linii i upuścić w dowolnym miejscu z powrotem w kodzie. Nie jestem pewien, czy zmiany w zmiennych można cofnąć. Ale mimo to jest bardzo przydatny i oszczędza dużo czasu. Czekałem na to w zaćmieniu bardzo długo.
źródło
Pytanie nie określa języka Eclipse, a wiele odpowiedzi zakłada Javę.
Jeśli używasz C ++ i GCC z debugerem GDB, Eclipse
Run->Move to Line
wykonuje zadanie i działa jak instrukcja Visual Studio Set Next . W tym przypadku Eclipse korzysta z możliwości GDB.Jeśli korzystam z Javy, nie znam sposobu na to za pomocą Eclipse lub Netbeans, chociaż inne odpowiedzi sugerowały wtyczki. Eclipse ma polecenie „upuść do ramki”, które działa dla Javy w mojej wersji (Juno SR1). Jeśli zmodyfikuję i zapiszę kod w funkcji w trybie debugowania, wiersz wykonania automatycznie przesunie się na początek bieżącej funkcji i będę mógł kontynuować z tego miejsca. To nie to samo, co określenie linii, ale to coś.
źródło