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ż