Pycharm Debug调试

这个文章是转载自https://blog.csdn.net/qq_33472146/article/details/90606359
使用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,然后回车。我试了三个变量,这里我们看到这三个变量目前都是没被定义的,我们可以在控制台里给它定义,也可以通过执行下一步,利用代码中的赋值来定义。
*注意:*这个眼镜模样的图案是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, time.ctime(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来进行调试,这是一种粗暴的方法,可以直接将错误信息打印出来。
嗯,经过一番折腾,也算是对pycharm的debug调试有了一些认识,可能还有一些其它的未掌握的技巧,留着以后慢慢探索吧。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值