【问题标题】:Is there a debugger that lets me step backwards through the code? [duplicate]是否有一个调试器可以让我后退代码? [复制]
【发布时间】:2012-08-27 20:08:13
【问题描述】:

可能重复:
Bidirectional (or reverse) debugging

我查看了 Omniscient Debugger (http://www.lambdacs.com/debugger/ODBDescription.html),但它是 Java 特有的。对于原生应用程序(即 C/C++),是否有任何具有相同功能的调试器?

我还没有说清楚。我想打破虚假的数据值/代码路径,然后“回滚”,向后调试,直到在代码/逻辑/设计中找到错误。

我知道我可以“向前”一步一步调试,我想向后做同样的事情,所以调试器需要在每一步中保存它的上下文。

【问题讨论】:

标签: c++ c debugging


【解决方案1】:

除了用于检查此处已在 x86 目标上提到的过去指令的堆栈跟踪之外,较新的 gdb 还支持 recorded program execution and stepping backwards,这应该与您要查找的内容非常接近。

【讨论】:

    【解决方案2】:

    GDB 7.0 版(2009 年 9 月发布)将是第一个公开版本 gdb 支持反向调试(使程序的能力 正在调试一步并反向继续)

    附录:

    Visual Studio 2010 及更高版本支持“历史调试”(“IntelliTrace”):

    【讨论】:

    • Visual Studio 只能对用 C# 或 Visual Basic 编写的 .NET 应用程序执行此操作。正如文章所说,“IntelliTrace 不支持调试 C++”
    【解决方案3】:

    我认为您应该将 GDB 用于 C/C++。 您有一些堆栈跟踪选项,您将能够在程序中设置断点并逐步运行它。

    查看http://www.cs.cmu.edu/~gilpin/tutorial/#3.5 或在网上查找其他教程。

    希望对你有帮助。

    【讨论】:

    • @templatetypedef 这个答案是在向后退一步被编辑为要求之前给出的(叹气),尽管实际上 GDB 确实 支持这个(需要 GDB >=7):@987654322 @
    【解决方案4】:

    gdb 有命令 up ndown n 来选择 (n) 帧 updown

    这可能会有所帮助。

    【讨论】:

      【解决方案5】:

      对于 linux,建议使用GDB,而对于 Windows,建议使用 windbg

      【讨论】:

      • 我花了很多时间让 WinDbg 与我当前的项目一起工作,结果发现它不支持反向调试。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2015-08-23
      • 2015-03-01
      • 2011-08-31
      • 2011-10-05
      • 2015-07-25
      • 1970-01-01
      相关资源
      最近更新 更多