程序是流程式执行的,冗长的样子就不说了,
大概知道是哪个区间环节死循环(假死),但是。。。。。(这里省略)
大概位置打了个断点,然后下一步点到手指都不舒服了,还是没能到那一步。。。
请问 PyCharm 应该如何操作,不打断点,在出现假死的时候,能够实时知道现在在哪个语句位置?
1
janus77 2020-10-26 11:05:46 +08:00
2 分查找法了解一下
|
2
tempdban 2020-10-26 11:14:46 +08:00 via Android 1
这你 print 大法不就知道了?
|
3
jerome233 2020-10-26 11:15:34 +08:00
可以使用 Step Into My Code, 不用手动标记断点位置, 只在自己的服务代码内跳转, 不走标准库 /三方库的代码, 按快捷键一会就会定位到死循环的代码了
|
4
nifury 2020-10-26 11:29:41 +08:00
可以强行 pause 的吧,然后看下调用栈就知道了
|
5
iConnect 2020-10-26 11:42:54 +08:00 via Android
先肉眼估摸出错可能性比较大的区域,print 几个值和类型出来,基本上抓几轮下来就能定位准了。生产环境才是比较麻烦的,基本上要去找日志看了。
|
6
pppguest3962 OP @nifury 的确是,我 pause 下来了,但看到的位置是自带库里面的一段位置,我试着按了 DEBUG 菜单上的步出,步入几个 option,也没能发现,自己的程序是哪一行召唤到这个位置的。。。。
|
7
TimePPT 2020-10-26 11:56:48 +08:00 via Android
PySnooper - Never use print https://github.com/cool-RR/PySnooperfor debugging again
|
8
TimePPT 2020-10-26 11:57:18 +08:00 via Android
https://github.com/cool-RR/PySnooper
PySnooper - Never use print for debugging again |
9
nifury 2020-10-26 11:58:12 +08:00
@pppguest3962 #6 啊这,左下角不是有调用栈么,翻一翻就能看到程序调用的地方了呀
|
10
k3Sv1 2020-10-26 12:48:59 +08:00 via iPhone
你在陷入循环的时候 pause 或者直接中断不就能看到调用栈了吗
|
11
no1xsyzy 2020-10-26 20:27:23 +08:00
左下调用栈会用颜色区分你的代码和外部库的代码的…… 还是用 ignore 的颜色显示 .gitignore 掉的代码?没有在 .gitignore 以外用过第三方库所以不知道……
至于进 C 的情况直接显示 Frame 不可用。 而且可以跳到任何一层调用栈看变量和进 Console 执行代码…… |