在 Pycharm 中将断点定在定义函数 def 那一行(后面有调用函数), debug 会无视断点,直接跑完整个程序,请问该如何解决?

2021-06-18 18:56:09 +08:00
 dgfadsrawdfaer
补充说明:
1.这个情况只发生在断点在定义函数那一行,断点在其他地方都可以正常 debug 。
2.没有开启“Mute Breakpoint”。
2413 次点击
所在节点    Python
13 条回复
cyrbuzz
2021-06-18 19:56:12 +08:00
是我没 Get 到什么点吗,断点打在函数内不就好了吗= =。
JerningChan
2021-06-18 20:44:54 +08:00
嗯,为什么要断在 def 那一行呢?
dgfadsrawdfaer
2021-06-18 21:23:22 +08:00
@cyrbuzz 抱歉,没有讲清楚,不影响使用,就是无意中发现了这个现象,觉得特别奇怪,想了解清楚是什么情况。
dgfadsrawdfaer
2021-06-18 21:23:27 +08:00
@JerningChan 抱歉,没有讲清楚,不影响使用,就是无意中发现了这个现象,觉得特别奇怪,想了解清楚是什么情况。
nifury
2021-06-18 22:04:07 +08:00
因为 def 那一行并不会真正执行吧
同理如果你断点打在一个空行上,或者打在注释上,断点也不会触发
dgfadsrawdfaer
2021-06-18 22:08:21 +08:00
@nifury 嗯嗯原来是这样,不过请问一下为什么 debug 会把后面的代码也一起运行了呢(相当于使用了 Run,而不是 Debug ),不是应该可以让我一步步手动操作吗?
nifury
2021-06-18 22:14:08 +08:00
@dgfadsrawdfaer #6 默认 debug 就是运行到断点停下来呀,没有断点的话可不就运行到结束了嘛。另外 debug 下遇到异常会自动中断,这也是和直接 run 不一样的地方
如果要一步步操作的话可以用 python -m pdb your_script.py
dgfadsrawdfaer
2021-06-18 22:20:39 +08:00
@nifury 噢噢明白了,非常感谢你!
marquina
2021-06-19 00:27:06 +08:00
因为 def 只是告诉解释器有这个函数存在,不会有“代码运行到 def 这一行”这个说法
ericls
2021-06-19 03:53:27 +08:00
def 在 import  的时候运行
param
2021-06-19 07:03:43 +08:00
打到 def 那行,估计是会在函数被 define 的时候断点?而不是函数执行时
baobao1270
2021-06-19 09:31:58 +08:00
断点是运行在当前行执行前吧
所以你要打在 def 后面一行,也就是函数的第一行
QuinceyWu
2021-06-19 11:44:27 +08:00
在 def 后面一行打断点

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784329

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX