如何在PyCharm中进行反向调试?

7

我们都知道在调试模式下按 F9 可以前进,但是如果我们使用 F9 前进了几步,如何后退呢?或者这是否可能?

1个回答

5
我们无法在调试过程中后退几步,这不可能实现。(在Python和其他编程语言/调试器中都是如此。) 原因是调试器需要将程序状态恢复到之前的步骤。按照你的逻辑,这将涉及在程序的每一步中保存整个状态(内存、堆栈、临时文件等...)。(更不用说不能反转而需要精确计时的操作协议了。) 这将呈指数级增长并变得难以实现。这就是为什么不会这样做的原因。

1
这并不是不可能的!GDB可以在一些广泛使用的目标平台上进行反向执行,包括x86。然后还有ocanldebug……这是我使用过该功能的两个平台。可能还有其他的。 - Marko
@Marko,这个问题不是关于GDB的,而是关于默认的PyCharm调试器。在PyCharm上使用替代调试器是另一个问题,正如问题所问,GUI中不会有“返回”按钮。与其在评论中发表广泛的声明,不如自己编写一篇带有概念证明的文章。正如我所说,当你处于不可逆状态时,GDB的“返回”功能将无法工作。 - bad_coder
1
@bad_coder https://github.com/airportyh/time-traveling-debugger/issues https://m.youtube.com/watch?v=HlndMuAguEk - Gintas_
@Gintas_ 非常有趣的链接,但对于那些高级功能需求有限。大多数应用程序不需要那种调试器,即使像PyCharm这样受欢迎的调试器也存在缺陷,我想知道这些实验性调试器的可靠性和生产力如何... 但我喜欢这个概念,希望我们能看到更多这些功能变得普遍的情况。 - bad_coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接