【问题标题】:How to move one step back in VS Code debugging mode in Python?如何在 Python 的 VS Code 调试模式下后退一步?
【发布时间】:2021-07-25 01:54:04
【问题描述】:

问题说明了一切。基本上,我在 VS 代码调试器中寻找与 Step over 按钮相对的按钮(更准确地说,是与 underlined button 相对的按钮)。

【问题讨论】:

  • 没有这样的功能
  • 我希望这是你能做的事情。
  • 如果没有虚拟机快照集成之类的东西,理论上甚至不可能。即便如此,它是否有效也取决于所有 IO 是否都停留在 VM 范围内(进行网络的代码会与主机外部的服务不同步)。
  • 这将是一个非常酷的功能,但它需要缓存程序和计算机状态并让您根据请求回滚到它的东西。如果可能的话,相当昂贵。但是,我的方法是在前一行设置一个断点,然后从头开始运行。不一样,我知道,但有时它可以让我弄清楚我想要什么。
  • @joanis,绝对有可能;每个主要的虚拟化工具(qemu、VirtualBox、VMware)都支持快照/回滚,所以这只是调试器集成的问题。但可以肯定的是昂贵。 (OTOH,如果正在调试的错误发生在运行时数小时内,也许它会比从头开始更便宜)。

标签: python visual-studio-code vscode-debugger


【解决方案1】:

如果可以在 [.ipynb]jupyter notebook 文件中运行您的代码,the google colab 中就有这样的功能。

  • 在调试器提示符中使用%%debug 魔法命令和命令up

【讨论】:

  • up 转到外部堆栈帧。它不会回到过去;当该堆栈帧引用了由上一次操作改变的数据时,这些改变的影响不会被撤销。
【解决方案2】:

您可以使用Debug: Jump to Cursor 命令更改下一个执行行。

  1. 设置断点
  2. 等待代码停止
  3. 点击所需的行
  4. 打开命令列表(默认为ctrl + shift + p
  5. 使用Debug: Jump to Cursor
  6. 享受

注意:您可以将此操作绑定到一些热键,例如 (ctrl + f8) doc

【讨论】:

  • 这并不能解决问题。如果你改变了一个变量,然后在你改变这个变量之前跳到一行代码,这个变量仍然被改变并且会以这种方式运行。
  • @Evergreen 您无法撤消此类操作,因为调试器无法及时移动,但您可以使用右侧的watch 面板更改变量的值
  • 是的......这就是我的意思,如果你有一个函数,并且你跨过这个函数并且它改变了一个长列表的值,你无法知道它的值是什么除非您有超人的记忆力,否则该列表在更改之前。不要误会,这是一个很好的答案,但在调试复杂代码或处理巨大数组的情况下没有帮助。
  • @JL0PD, ...但是时间旅行是 OP 在这里要求做的,所以如果“不,那是不可能的”,而不是向他们展示看起来相似但实际上没有的东西,那么正确的答案是做他们想做的事。
  • 这是一种体面的方式,并且很好地使用了调试器。您可以返回几行以重置变量值并重新检查您快进的步骤。有时,由于大量数据负载和其他 IO 任务,重新运行调试器的成本很高。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2022-07-26
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多