【发布时间】:2020-07-13 11:38:14
【问题描述】:
我正在处理一个 Python 项目,并且我一直在频繁使用 VS Code Python 调试器、使用断点或仅使用单步执行/进入工具来了解我的代码是如何执行的。
对单个 Python 文件进行一些更改后,调试器开始出现异常行为。 虽然脚本本身按预期执行(基于日志和预期的副作用),但当我使用调试器单步执行脚本时 它会跳过明显正在执行的行,然后停止明显没有被执行的行。
例如,在设置了一个早期断点并仅使用“Step Over”来浏览我的脚本的执行后,调试器会按顺序突出显示以下几行:
- if 语句(正常 [预计根据变量值解析为 true])
- if 块的每一行(正常)
- 对应else块的第一行(不正常)--没有停在else语句本身上(也不正常)
- try 块的第二行,没有在 try 语句本身或 try 块的第一行停止(不正常)--并且没有在上述 else 块中的任何其他行停止李>
...(更多行)
- if 块的第二行,if 语句解析为 false,而不在 if 语句本身或 if 语句的第一行停止(不正常)
- finally 块的第二行,没有停在 else 语句或上面语句对应的 else 块(不正常)--或在 finally 行本身,或在 finally 块的第一行(不正常)
再次,我可以清楚地告诉这不是代码的执行方式。参考上面的第5步和第6步:代码生成else情况下编码的email,而不生成if情况下编码的email。
如果我将文件恢复到之前的状态,调试器就会正常运行。使用 git diff,我可以看出上一个版本和这个版本在阻塞、括号、空格等方面没有区别。
我错过了什么吗?我相信我以前从来没有遇到过这个问题。
- 我不明白更改代码会如何改变调试器的行为
- 此问题使调试器对我理解代码行为的意图基本上无用。
【问题讨论】:
-
您是否在代码更改后重新加载了 Python 进程?看起来调试器有另一个版本的运行时代码。
-
我不确定你到底在问什么。但是,我已经保存了代码,重新启动了 VS Code,并重新安装了 VS Code 的 Python 扩展。
-
这有帮助吗?
-
抱歉,我不清楚。我在发布这个问题之前采取了所有这些步骤——它们没有改变任何东西。
-
我的 VScode Python 调试器今天也开始发疯了。拒绝执行某些代码。有时会正确拒绝 F11。打开调试文件的副本,标题有时是斜体。有时会中断评论。等等等等。我有最新的 V 1.43.2。
标签: python visual-studio-code vscode-debugger