Pycharm Debug调试(纯干货) 您所在的位置:网站首页 pycharm设置变量 Pycharm Debug调试(纯干货)

Pycharm Debug调试(纯干货)

#Pycharm Debug调试(纯干货)| 来源: 网络整理| 查看: 265

使用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调试有了一些认识,可能还有一些其它的未掌握的技巧,留着以后慢慢探索吧。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有