在调试器中单步执行 PyCharm 中的最后一行

Step over last line in PyCharm in debugger

提问人:koegl 提问时间:7/9/2022 更新时间:7/9/2022 访问量:145

问:

我经常遇到这样的问题,我想在 PyCharm 调试器中单步跳过代码中的最后一行,但我不能,因为 PyCharm 只是停止执行。

下面是一个最小的示例 - 假设我想检查 的值:z

x = 5
y = 7
z = x * y  # here's the breakpoint

如果我在最后一行设置了一个断点,它还没有被执行,所以我无法检查,但如果单步执行下一行,执行就会停止。z

我正在使用的解决方法是在末尾添加一个“虚拟”行,这样我就可以停在那里,如下所示:

x = 5
y = 7
z = x * y
pass  # here's the breakpoint

有没有更“优雅”的方法可以做到这一点?

python 调试 pycharm

评论

1赞 Grismar 7/9/2022
不,如果要在例程或脚本的最后一行之后查看脚本的状态,则需要添加另一行 - 调试器没有任何可显示的内容,因为调试器没有 next 语句可以等待,从某种意义上说,您要求查看的内容从未真正存在。或者至少,不是处于调试器可以达到的状态。
0赞 koegl 7/9/2022
有道理,我认为可能有一些“智能”内置功能可以做到这一点
1赞 Grismar 7/9/2022
这不是一个疯狂的问题,但请考虑一下:如果赋值后没有实际使用的代码行,那么 的值将无关紧要 - 它即将被丢弃,没有任何东西使用它。因此,如果您需要知道 的值,可能会有后续代码使用 ,您应该能够打破它。zzzzz
0赞 koegl 7/9/2022
我想我同意,但是当我的函数/脚本/等还没有准备好时,我经常在编写代码时遇到这个问题,所以我只想在最后一行停下来并“探索”如何进一步获得所有变量的状态 - 但也许这不是调试器的正确用法。我能做的是使用 jupyter 笔记本风格的编码环境,我只需执行此代码,拥有所有变量,然后继续处理它们 - 我只是不喜欢这样,但这只是偏好
1赞 Grismar 7/9/2022
我认为值得重新考虑你的编码实践——你要确保你到目前为止编写的代码有效是件好事,但代码的好坏取决于它所属的程序。你需要知道接下来会发生什么,所以你不妨已经写一些了。没有争论的味道,但作为一个有经验的程序员,我看不出在很多情况下,在进行某种延续之前进行调试有真正的好处 - 在绝对需要的情况下,a 比让整个语言效率低一些要好。pass

答: 暂无答案