回答
最新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
VS 2010應該有這樣的事情,我想。
您可以考慮使用最新版本的VMware Workstation中提供的VMware重播調試,例如,見http://www.replaydebugging.com/2008/08/vmware-workstation-65-reverse-and.html。您可以在http://www.vmware.com/products/ws/下載試用版,它可以與Visual Studio一起使用。
(聲明:我對VMware的工作,雖然沒有對這個產品)。
新發布的gdb-7.0包括針對本機linux x86和x86_64的反向調試功能。你可以像往常一樣調試任何Linux程序,打開「錄音」功能,從這一點開始,如果你向前邁進太遠,你可以後退或反轉 - 繼續到斷點。
是的,我已經在90年代使用它了。Watcom C調試器(瞭解FORTRAN和大多數其他語言)可以讓您及時退後一步。
這是偉大的,但不是一個大的新東西......
是的,我已經使用Virtutech Simics具有反向自2005年以來它是非常有用的,而且確實讓大多數的錯誤很簡單修復。特別是與時間和競賽條件相關的內容,以及多核/線程「heisenbugs」。
請參閱http://jakob.engbloms.se/archives/1547,http://jakob.engbloms.se/archives/1554和http://jakob.engbloms.se/archives/1564列出了迄今爲止大多數已知的反向調試器嘗試的清單。
作爲一個有趣的歷史記錄,EXDAMS在60年代後期爲MULTICS實施了事後反調試。
雖然這個問題很老,reverse-debugging仍然是一個有趣的話題,所以我想我會發佈一個更新的答案。我的論文,Combining reverse debugging and live programming towards visual thinking in computer programming,涵蓋了一些歷史的方法,並解釋了無所不知的調試和真正的反向調試的區別:
計算機,具有前瞻性執行程序直到某一點上,應該真正能夠提供我們有關它的信息。這種改進是可能的,並且可以在所謂的全知調試器中找到。它們通常被分類爲反向調試器,儘管它們可能更準確地被稱爲「歷史日誌記錄」調試器,因爲它們僅僅是在執行期間記錄信息以便稍後查看或查詢,而不是讓程序員在執行程序中及時退後。 「無所不知」來自這樣一個事實,即已記錄的整個程序狀態歷史記錄在執行後可供調試器使用。那麼不需要重新運行該程序,也不需要手動代碼檢測。
基於軟件的全知調試始於1969年的EXDAMS系統,它被稱爲「調試時歷史回放」。自2009年以來,GNU調試器GDB支持無所不知的調試,其「過程記錄和重播」功能。 TotalView,UndoDB和Chronon似乎是目前可用的最好的全能調試器,但都是商業系統。對於Java而言,TOD似乎是最好的開源替代方案,它利用部分確定性重播以及部分跟蹤捕獲和分佈式數據庫來記錄所涉及的大量信息。
調試器不僅允許錄製導航,而且實際上能夠在執行時間後退一步。它們可以更準確地描述爲準時,時間行程,雙向或反向調試器。
第一個這樣的系統是1981年COPE原型...
我的gdb的問題在於它不允許對多線程應用程序進行反向調試。這裏沒有首發。 – casualcoder 2015-06-11 02:02:16
@casualcoder,我不太瞭解gdb,但它看起來確實允許它,請參閱[這裏的答案](http://stackoverflow.com/questions/7517236/how-do-i-enable-reverse-調試多線程程序) – Abraham 2015-06-11 11:20:13
我在Linux上使用UndoDB不是純GDB的每一個調試會話。反向調試非常有用,顯着加快了調試速度。您可以從問題的症狀開始進行調試(例如,斷言失敗或打印某些錯誤消息)並及時向後調試,以查找問題的根本原因。
- 1. 雙向/反向映射
- 2. 反向雙向鏈表
- 3. 在Subversion中撤銷反向合併或雙反向合併
- 4. 雙向SSL或單向SSL在單向休息時調用?
- 5. 雙向鏈表的反向部分
- 6. C++雙向鏈表反向打印
- 7. 反向打印雙向鏈表
- 8. 在C#反雙向鏈表
- 9. 雙向電力反覆monhts
- 10. OneToOne雙向雙向關聯
- 11. 調試向後
- 12. PHP的Apache - 反向代理雙斜槓
- 13. C++中的反向雙鏈表
- 14. 在C中反向雙鏈接Deque
- 15. 雙向無限滾動反應本地
- 16. 撤消或反向argsort(),python
- 17. 反向P /調用教程?
- 18. 在反向打印雙向鏈接列表
- 19. 調試vstemplate嚮導
- 20. 縱向或反向縱向活動僅限
- 21. 任何人都嘗試在gdb中進行反向調試?
- 22. @OneToOne單向和雙向
- 23. 反向
- 24. 「反向」
- 25. 反向
- 26. PHP雙向crypting
- 27. NHibernate。雙向性
- 28. 雙向FIFO
- 29. SymmetricDS雙向
- 30. 雙向綁定
投票結束爲工具記錄,或不清楚。另請參閱: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