簡體   English   中英

“時間旅行調試器”的原理是什么?

[英]What is the principle of “Time Travel Debugger”?

嗯......我的老師,我的一些同學和我將構建一個Debugger項目。 我們希望我們的調試器是交互式的,也就是說,當輸入代碼時,結果將在幾秒鍾后的某個地方顯示,並且結果會在輸入代碼更改時發生變化。 另一方面, 在運行時,我們可以回滾到前一行或斷點

按照我老師的說法,編程時會涉及“時間旅行調試”技術。 我搜索了一些由其他人維護的項目,但我很難理解代碼,並且在任何這些README文件中都沒有介紹這種技術。

參考: https//github.com/mattgodbolt/compiler-explorer

這通常稱為“時間旅行調試”,通常與“功能反應編程”相關聯。 (這些是您可以輕松搜索的術語。)在Elm語言博客上有一些合理可訪問的文檔(例如, 時間旅行變得簡單 ),但我建議您從一開始就開始而不是潛入中間並且時間旅行你的理解(一些雙關語:-))

嚴格來說,時間旅行調試是在運行時發生的事情,但是如果您使用函數式語言(例如Haskell,Elm,OCAML或其他各種已經實現了時間調試器的程序)進行編程,則會更加容易,並編譯這些語言(是的,它們被編譯)涉及一些有趣的概念。

Elm編譯為javascript,這使得它相對容易實驗。

享受項目帶來的樂趣。

時間旅行調試也稱為反向調試 通俗地說,您可以反復調試相同的行(不停止/重新啟動應用程序)。

例如,您正在調試一個在第10行引發異常的方法,以找到異常的原因,您可以從前一點再次執行該方法,例如第4行,而不重新啟動完整的調試過程。 這一切都是實時且非常有效的。

我在Visual Studio中使用過這個功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM