16

有没有人真正使用过可逆调试器?谷歌出现的唯一产品是UndoDB。它显然仅适用于 Linux。

4

11 回答 11

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找到一些有用的使用提示

于 2009-10-08T03:43:39.270 回答
6

新发布的 gdb-7.0 包括针对原生 linux x86 和 x86_64 的反向调试功能。您可以像往常一样调试任何 linux 程序,打开“录制”功能,从那时起,如果您前进得太远,您可以后退或反向继续到断点。

于 2009-10-09T18:48:01.853 回答
6

As a amusing historical note, EXDAMS implemented a post-mortem reverse debugging back in the late 60s for MULTICS.

于 2011-11-06T22:16:44.523 回答
4

您寻找的词可能是“无所不知的调试”。

这是一个:http ://www.lambdacs.com/debugger/

UndoDB 页面有一些指向(昂贵的)商业调试器的链接。

于 2009-02-06T23:23:55.467 回答
4

Yes, I have used Virtutech Simics with reverse since 2005. It is incredibly useful, and does make most bugs very simple to fix. Especially those related to timing and race conditions, and multicore/thread "heisenbugs".

See http://jakob.engbloms.se/archives/1547, http://jakob.engbloms.se/archives/1554, and http://jakob.engbloms.se/archives/1564 take inventory of most known reverse debugger attempts to date.

于 2009-10-20T19:25:52.467 回答
4

Although this question is old, remains an interesting topic, so I thought I'd post an updated answer. My thesis, Combining reverse debugging and live programming towards visual thinking in computer programming, covers some of the historical approaches, and explains the difference between omniscient debugging and true reverse debugging:

The computer, having forward-executed the program up to some point, should really be able to provide us with information about it. Such an improvement is possible, and is found in what are called omniscient debuggers. They are usually classified as reverse debuggers, although they might more accurately be described as "history logging" debuggers, as they merely record information during execution to view or query later, rather than allow the programmer to actually step backwards in time in an executing program. "Omniscient" comes from the fact that the entire state history of the program, having been recorded, is available to the debugger after execution. There is then no need to rerun the program, and no need for manual code instrumentation.

Software-based omniscient debugging started with the 1969 EXDAMS system where it was called "debug-time history-playback". The GNU debugger, GDB, has supported omniscient debugging since 2009, with its 'process record and replay' feature. TotalView, UndoDB and Chronon appear to be the best omniscient debuggers currently available, but are commercial systems. TOD, for Java, appears to be the best open-source alternative, which makes use of partial deterministic replay, as well as partial trace capturing and a distributed database to enable the recording of the large volumes of information involved.

Debuggers that do not merely allow navigation of a recording, but are actually able to step backwards in execution time, also exist. They can more accurately be described as back-in-time, time-travel, bidirectional or reverse debuggers.

The first such system was the 1981 COPE prototype ...

于 2015-06-08T11:43:31.177 回答
3

我认为 VS 2010 应该有这样的东西。

于 2009-02-06T23:39:41.553 回答
2

您可以考虑使用最新版本的 VMware Workstation 中提供的 VMware 的 Replay Debugging,例如参见http://www.replaydebugging.com/2008/08/vmware-workstation-65-reverse-and.html您可以在http://www.vmware.com/products/ws/下载试用版,它适用于 Visual Studio。

(免责声明:我为 VMware 工作,但不在此产品上。)

于 2009-02-10T13:53:18.073 回答
2

Yes, I've used it back in the 90th.. The Watcom C Debugger (understood FORTRAN and most other languages as well) had the option to let you step back and forward in time.

It's great, but not a big new thing...

于 2009-10-09T18:50:42.450 回答
1

I am using UndoDB on Linux instead of plain gdb for every debugging session. Reverse debugging is very useful and speeds up debugging significantly. You can start debugging from the symptom of the problem (e.g. assertion failure or some wrong message is printed) and debug backwards in time, looking for the root cause of the problem.

于 2017-06-09T10:12:09.097 回答
1

Mozilla rr open source trace based reverse debugging

https://github.com/mozilla/rr

It is similar to UndoDB, but free and open source.

Only works on Linux x86 unfortunately, because such tools require advanced OS features to work efficiently.

Here is a minimal example of rr in action: How to go to the previous line in GDB?

于 2018-04-28T07:38:26.230 回答