Debugowanie podróży w czasie

Debugowanie w czasie lub debugowanie w czasie to proces cofania się w czasie poprzez kod źródłowy , aby zrozumieć, co dzieje się podczas wykonywania programu komputerowego . Zazwyczaj debugowanie i debuggery , narzędzia, które pomagają użytkownikowi w procesie debugowania, pozwalają użytkownikom wstrzymać wykonywanie uruchomionego oprogramowania i sprawdzić aktualny stan programu. Użytkownicy mogą następnie przejść do przodu w czasie, wkraczając w lub przekraczając stwierdzenia i podążając w kierunku do przodu. Interaktywne debuggery obejmują możliwość modyfikowania kodu i krok do przodu na podstawie zaktualizowanych informacji. do debugowania wstecznego umożliwiają użytkownikom cofanie się w czasie poprzez kroki, które doprowadziły do ​​osiągnięcia określonego punktu w programie. Debugery podróżujące w czasie zapewniają te funkcje, a także pozwalają użytkownikom na interakcję z programem, zmianę historii w razie potrzeby i obserwowanie reakcji programu.

Charakterystyki wspierające podróż dwukierunkową

Istnieje kilka cech, które wspierają zdolność do poruszania się w czasie zarówno do tyłu, jak i do przodu.

  • Wybór czysto funkcjonalnego języka programowania pomaga ze względu na samowystarczalny charakter czystych funkcji . Czyste funkcje nie mają skutków ubocznych i zależą tylko od informacji jawnie dostarczonych do funkcji, zapewniając powtarzalną, niezawodną i odtwarzalną ścieżkę przez kod.
  • Języki i debuggery, które umożliwiają wymianę podczas pracy , możliwość modyfikowania kodu w trakcie jego działania, zapewniają niektóre wymagania niezbędne do przewinięcia i potencjalnego przepisania wykonania.
  • Narzędzia oparte na debuggerze GNU (GDB) , dostępne dla zgodnych języków, takich jak C , C++ , Go i Fortran , umożliwiają odwrotne debugowanie, ale wysiłek ten znacznie spowalnia interakcję.

Debugery podróżujące w czasie

Przykłady debuggerów z możliwością cofania się:

Język Debugery
C++ rr dla systemu Linux x86, Cofnij UDB dla systemu Linux
R provDebugR
Pyton PyTrace
JavaScript Wallaby.js, znacznik mejozy
C# RevDeBug
Jawa RevDeBug dla C# i Javy , WhyLine dla Javy , Cofnij UDB
Wiąz Wiązów , Reaktor Wiązów
OCaml ocamldebug
Iść Cofnij UDB dla systemu Linux
Rdza Cofnij UDB dla systemu Linux
Natywny Windows Microsoft Time Travel Debugging (TTD) dla natywnego oprogramowania Windows (x86, x64, ARM, ARM64), eShard esReven Full System Timeless Analysis for Windows
Natywny dla Linuksa eShard esReven Pełna ponadczasowa analiza systemu dla systemu Linux

Zobacz też