시간 이동 디버깅

Time travel debugging

시간 여행 디버깅 또는 시간 여행 디버깅은 컴퓨터 프로그램 [1]실행 중에 무슨 일이 일어나는지 이해하기 위해 소스 코드를 통해 시간을 되돌리는 과정입니다.일반적으로 디버깅 및 디버거는 실행 중인 소프트웨어의 실행을 일시 중지하고 [2]프로그램의 현재 상태를 검사할 수 있는 도구입니다.그런 다음 사용자는 시간 내에 앞으로 나아가 스테이트먼트에 들어가거나 스테이트먼트를 넘어 앞으로 나아갈 [3]수 있습니다.인터랙티브 디버거에는 코드를 수정하고 업데이트된 [4]정보에 따라 전진하는 기능이 포함됩니다.리버스 디버깅툴을 사용하면 프로그램의 특정 포인트에 도달한 스텝에서 시간을 되돌릴 수 있습니다.시간 여행 디버거는 이러한 기능을 제공하며 사용자가 프로그램과 상호 작용하여 필요에 따라 이력을 변경하고 프로그램이 어떻게 [5]반응하는지 볼 수 있습니다.

양방향 이동을 지원하는 특성

시간적으로 전진할 뿐만 아니라 후퇴할 수 있는 능력을 지원하는 몇 가지 특성이 있습니다.

  • 순수 함수 프로그래밍 언어를 선택하면 순수 함수의 자급자족적 특성 때문에 도움이 됩니다.순수한 함수는 부작용이 없으며 함수에 명시적으로 제공된 정보에만 의존하여 코드를 통해 반복 가능하고 신뢰할 수 있으며 재생 가능한 경로를 제공합니다.
  • 핫 스와핑, 코드 실행 시 코드 수정 기능, 되감기에 필요한 몇 가지 요건 및 실행 [6][7]재작성을 가능하게 하는 언어 및 디버거.
  • C, C++, Go, Fortran과 같은 호환 언어에서 사용할 수 있는 GNU 디버거(GDB) 기반의 툴은 역디버깅이 가능하지만, 그 때문에 상호작용이 [8]현저하게 느려집니다.

시간 이동 디버거

뒤로 물러설 수 있는 디버거의 예:

언어 디버거
C++ x86 Linux의 경우 rr, Linux의 경우[9] UDB 실행 취소
R 디버깅[10]
파이썬 파이[11] 트레이스
자바스크립트 WhyLine, Wallaby.js,[12] 감수분열[13] 트레이서
C# RevDebug
자바 C# 및 [14]Java용 RevDebug, [15]Java용 WhyLine, UDB 실행 취소
느릅나무 Elm 디버거, Elm[16] Reactor
OCaml ocamldebug
가세요 Linux용[17] UDB 실행 취소
녹 Linux용[18] UDB 실행 취소
Windows 네이티브 Windows 네이티브 소프트웨어(x86, x64, ARM, ARM64[20])용 Microsoft Time Travel Debugging(TTD) 툴[19]

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Time Travel Debugging in WinDbg Preview!". Debugging Tools for Windows. Retrieved 2018-05-08.
  2. ^ Telles, Matthew; Hsieh, Yuan (2001-04-01). The Science of Debugging. Coriolis Group Books. ISBN 9781576109175.
  3. ^ "Reverse debugging, time travel debugging". undo.io. Retrieved 2018-05-08.
  4. ^ "Interactive Debugging With Node.js - DZone Web Dev". dzone.com. Retrieved 2018-05-08.
  5. ^ "Elm's Time Travelling Debugger". debug.elm-lang.org. Retrieved 2018-05-08.
  6. ^ "interactive programming". elm-lang.org. Retrieved 2018-05-08.
  7. ^ "Hot reloading and time travel debugging: what are they?". Code Cartoons. 2015-10-21. Retrieved 2018-05-08.
  8. ^ "6 Things You Should Know About Time Travel Debugging". undo.io. Retrieved 2018-05-08.
  9. ^ "UDB - Time Travel Debugger for C/C++".
  10. ^ "ProvTools/provDebugR". github.com. 2018-07-31. Retrieved 2018-07-31.
  11. ^ "PyTrace Time Travel Debugger for Python".
  12. ^ "Wallaby.js Introduction: Time Travel Debugger". wallabyjs.com. Retrieved 2020-02-27.
  13. ^ Donut, Fox (2018-04-29). "You Don't Need Redux, MobX, RxJS, Cerebral". Fox Donut. Retrieved 2018-05-24.
  14. ^ "About RevDeBug". revdebug.com. Retrieved 2020-03-28.
  15. ^ "Whyline for Java". cs.cmu.edu. Retrieved 2021-01-21.
  16. ^ "time travel made easy". elm-lang.org. Retrieved 2018-05-08.
  17. ^ "Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability".
  18. ^ "Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability".
  19. ^ DOMARS. "Time Travel Debugging - Overview". docs.microsoft.com. Retrieved 2018-05-08.
  20. ^ "Get WinDbg Preview".