PycharmDebug调试(纯⼲货)
使⽤Debug调试代码
1.打断点
⼀个断点标记了⼀个代码⾏,当Pycharm运⾏到该⾏代码时会将程序暂时挂起。
注意断点会将对应的代码⾏标记为红⾊,取消断点的操作也很简单,在同样位置再次单击即可。
如图所⽰,打了两个断点
当你将⿏标指针悬停在断点上⽅时,Pycharm会显⽰断点的关键信息,⾏号以及脚本属性,如果你希望更改该断点的属性,右击断点:
可以尝试对断点属性进⾏个性化更改,然后观察图标的变化。
2.代码调试
我们有⼏种⽅法来debug程序
第⼀种:通过⿏标右击代码处,可以来debug程序
第⼆种:可以通过点击这个⼩⾍⼦的图标来进⾏debug
接下来会Pycharm会执⾏以下操作:
(1)PyCharm开始运⾏,并在断点处暂停
(2)断点所在代码⾏变蓝,意味着Pycharm程序进程已经到达断点处,但尚未执⾏断点所标记的代码。
(3)Debug tool window窗⼝出现,显⽰当前重要调试信息,并允许⽤户对调试进程进⾏更改。
在这⾥介绍⼀下debug窗⼝⼏个图标分别代表的意思
这⾥⼀排七个坐标的意思分别是
1.show execution point (F10) 显⽰当前所有断点
2.step over(F8) 单步调试。
若函数A内存在⼦函数a时,不会进⼊⼦函数a内执⾏单步调试,⽽是把⼦函数a当作⼀个整体,⼀步执⾏
3.step into(F7) 单步调试。
若函数A内存在⼦函数a时,会进⼊⼦函数a内执⾏单步调试。
4.step into my code(Alt + Shift +F7) 执⾏下⼀⾏但忽略libraries(导⼊库的语句)
5.force step into(Alt + Shift +F7) 执⾏下⼀⾏忽略lib和构造对象等
6.step out(Shift+F8)当⽬前执⾏在⼦函数a中时,选择该调试操作可以直接跳出⼦函数a,⽽不⽤继续执⾏⼦函数a中的剩余代码。并返回上⼀层函数。
7.run to cursor(Alt +F9) 直接跳到下⼀个断点
然后接着来看变量查看器
在调试过程中观察变量的状态。我们需要对其设置⼀个查看器。在Watches窗⼝中,单击加号,输⼊期望查看的变量名称,例如这⾥输⼊delay,然后回车。我试了三个变量,这⾥我们看到这三个变量⽬前都是没被定义的,我们可以在控制台⾥给它定义,也可以通过执⾏下⼀步,利⽤代码中的赋值来定义。
idea debug
*注意:*这个眼镜模样的图案是watch窗⼝(我当时可是了半天…,⽹上的都是⼀些⽼版本的介绍的watch窗⼝,=.=)
可以通过点击这个图标
将这两个窗⼝连在⼀起查看
OK,接下来我们来看控制台窗⼝
Console窗⼝的⼯作模式:
为什么需要⽤到Console窗⼝呢?当我们需要查看程序给出的错误信息,或者进⾏⼀些额外的临时运算时,就需要在这个窗⼝⾥⾯进⾏。
单击左侧⼯具栏中的命令符按钮,显⽰Python的命令提⽰符(在这⾥,问题⼜来了,新版的pycharm的那个图标⼜换了,⽽且还隐藏的很深,这是怕别⼈到了吗。。。)
经过探索,发现在这=.=
点击这个,即可显⽰python的命令提⽰符
在这⾥做个⼩测试,这⾥可以直接编译python代码,执⾏⼀些python命令。
介绍完这些,开始进⼊正式调试代码,我⽤的⼩例⼦的代码如下:
import threading
import time
def get_thread_name():
t = threading.current_thread()
return t.name
def print_time(delay):
"""Define a function for the thread."""
thread_name=get_thread_name()
count = 0
while count < 8:
time.sleep(delay)
count += 1
print("%s:%s" % (thread_name, ime(time.time())))
t1 = threading.Thread(target=print_time, args=(1,))
t2 = threading.Thread(target=print_time, args=(2,))
t1.start()
t2.start()
t1.join()
t2.join()
调试开始,并且在第⼀个断点处停⽌,断点所在的⾏变为蓝⾊,说明Pycharm已经击中了这个断点,但尚未执⾏这⾏代码。
通过断点调试,在第⼀个断点处,进⾏下⼀步操作,即可得到变量的值的变化情况
最后在介绍⼀下,可能有时候debug并不能正常进⾏,控制台会输出如下信息:
程序本⾝应该没有错误,就是不能正常debug。
下⾯记录⼏种解决⽅式:
⼀、关闭Pycharm,删除⼯程⽬录下的.idea⽂件夹并重启。
⼆、删除所有的断点。可以点击下图所⽰的两个叠在⼀起的红⾊原点进⾏操作。
三、点击Pycharm的File>>Invalidate Caches / Restart…,然后选择Invalidate and Restart。这个操作清空了项⽬中的缓存信息。
四、重建整个⼯程并重新配置。
这四种⽅法可能会解决这个问题,我试了第三种,然后第⼆种应该也是可以的,第⼀种和第四种⼩⼼尝试。
其实之前经常⽤print来进⾏调试,这是⼀种粗暴的⽅法,可以直接将错误信息打印出来。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论