2009-02-06 69 views
13

有沒有人實際使用過可逆調試器? Google推出的唯一產品是UndoDB。這顯然只適用於Linux。雙向(或反向)調試

+1

投票結束爲工具記錄,或不清楚。另請參閱:http://stackoverflow.com/questions/1545474/anyone-tried-reverse-debugging-in-gdb,http://stackoverflow.com/questions/1470434/how-does-reverse-debugging-work – 2015-07-06 15:46:40

回答

8

最新GDB版本7.0(本週發佈)支持在多個平臺反向調試(如原始的i386和x86_64的Linux,VMware的工作站,UndoDB和來自Virtutech的Simics仿真器)。 ftp://ftp.gnu.org/pub/gdb

它可以與VMware工作站7.0的最新預覽/預發佈協同工作,該工作站還支持使用Visual Studio調試器反向調試MSWindows客戶端。在http://communities.vmware.com/community/beta/workstation處獲得工作站7.0的免費試用版,並在這裏找到一些有用的使用提示http://communities.vmware.com/docs/DOC-10714

4

您要查找的單詞可能是「無所不知的調試」。

這裏是一個:http://www.lambdacs.com/debugger/

的UndoDB頁面有一些鏈接(昂貴的)的商業調試器。

3

VS 2010應該有這樣的事情,我想。

5

新發布的gdb-7.0包括針對本機linux x86和x86_64的反向調試功能。你可以像往常一樣調試任何Linux程序,打開「錄音」功能,從這一點開始,如果你向前邁進太遠,你可以後退或反轉 - 繼續到斷點。

2

是的,我已經在90年代使用它了。Watcom C調試器(瞭解FORTRAN和大多數其他語言)可以讓您及時退後一步。

這是偉大的,但不是一個大的新東西......

5

作爲一個有趣的歷史記錄,EXDAMS在60年代後期爲MULTICS實施了事後反調試。

3

雖然這個問題很老,仍然是一個有趣的話題,所以我想我會發佈一個更新的答案。我的論文,Combining reverse debugging and live programming towards visual thinking in computer programming,涵蓋了一些歷史的方法,並解釋了無所不知的調試和真正的反向調試的區別:

計算機,具有前瞻性執行程序直到某一點上,應該真正能夠提供我們有關它的信息。這種改進是可能的,並且可以在所謂的全知調試器中找到。它們通常被分類爲反向調試器,儘管它們可能更準確地被稱爲「歷史日誌記錄」調試器,因爲它們僅僅是在執行期間記錄信息以便稍後查看或查詢,而不是讓程序員在執行程序中及時退後。 「無所不知」來自這樣一個事實,即已記錄的整個程序狀態歷史記錄在執行後可供調試器使用。那麼不需要重新運行該程序,也不需要手動代碼檢測。

基於軟件的全知調試始於1969年的EXDAMS系統,它被稱爲「調試時歷史回放」。自2009年以來,GNU調試器GDB支持無所不知的調試,其「過程記錄和重播」功能。 TotalView,UndoDB和Chronon似乎是目前可用的最好的全能調試器,但都是商業系統。對於Java而言,TOD似乎是最好的開源替代方案,它利用部分確定性重播以及部分跟蹤捕獲和分佈式數據庫來記錄所涉及的大量信息。

調試器不僅允許錄製導航,而且實際上能夠在執行時間後退一步。它們可以更準確地描述爲準時,時間行程,雙向或反向調試器。

第一個這樣的系統是1981年COPE原型...

+0

我的gdb的問題在於它不允許對多線程應用程序進行反向調試。這裏沒有首發。 – casualcoder 2015-06-11 02:02:16

+0

@casualcoder,我不太瞭解gdb,但它看起來確實允許它,請參閱[這裏的答案](http://stackoverflow.com/questions/7517236/how-do-i-enable-reverse-調試多線程程序) – Abraham 2015-06-11 11:20:13

1

我在Linux上使用UndoDB不是純GDB的每一個調試會話。反向調試非常有用,顯着加快了調試速度。您可以從問題的症狀開始進行調試(例如,斷言失敗或打印某些錯誤消息)並及時向後調試,以查找問題的根本原因。