一、 代码调试

点击工具栏的调试按钮(如下图蓝色圈标记按钮)可以进行程序调试,可以在调试前先设置断点,断点设置就是在打开文件的行与前面的行号之间用鼠标单击进行设置和取消(如下图蓝色下划线上面的实体圆点)



设置后执行debug时到断点就会停下,如下图:



其中黄色荧光笔标记的为debug调试语句执行按钮,包括step over、step into等按钮,在run菜单中也有对应子菜单,相关功能也有对应快捷键,如F8、F7等。在右下角标记蓝色的框内能观察到对应变量的值。除了常规的step into和step over功能之外,PyCharm还提供了如下调试功能:

1、 step into(单步跟踪进入,遇函数进入函数代码执行):快捷键为F7,执行下一行,如果遇到子函数会进入子函数执行,包括调用标准库模块的子函数都会进入;

2、 step over(单步跟踪,遇函数当成一行代码执行,不会进入函数内执行):快捷键为F8,执行下一行,如果遇到子函数不会进入子函数执行,将子函数作为一行执行,但如果子函数中有断点会执行到断点处;

3、 Step into my code(执行到应用代码),从当前系统模块函数代码中直接往下执行直到执行到应用本身的代码,快捷键为Alt+Shift+F7,当执行step into进入一个系统模块的代码中去以后,使用该功能可以回到自己的代码并继续向下行执行,这个功能老猿觉得应该某些时候非常有用;

4、 Force Step into(强制单步执行但忽略调试过滤条件):快捷键也为Alt+Shift+F7,但菜单栏是灰色的,查阅相关资料说当调用了一个类库方法时候,强制进入会进入到该类库的方法里面,哪怕是class代码,这一般没必要,所以必须强制才能进去。另外从菜单的hint信息中,是说对于逐步调试过滤的库、构造函数等也强制进入,如果是这样应该有个地方可以设置调试过滤的地方,老猿暂时没有这个功能。因此这个功能老猿没弄明白是什么意思,因为老猿验证使用step into调用系统标准模块也会进入标准模块的构造函数执行,并且在老猿测试过程中,该按钮始终为不可用状态,不能点击;

5、 step out(执行跳出当前函数):快捷键为Shift+F8,当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数;

6、 smart step into(智能单步跟踪):快捷键为:Shift+F7,这个在按钮中没有,在菜单中有,这个功能也是一个非常有用的功能,当一行代码中有多个函数,想进入其中一个函数其他函数不进入,使用该功能可以让调试人员选择进入的函数。如:



就可以选择需要调试进入的函数而其他两个函数不进入。

注意:如果想选择上面3个函数中的2个执行必须在执行第一个函数返回时再选择这种模式执行。另外该方式执行到调试的函数内时,如果还需要继续选择调试下一个函数,需要在当前执行函数的return语句去选择该方式执行,在其他地方该方式执行等同于断点恢复执行执行功能。

7、 Force Step over(强制单步跟踪):快捷键为Alt+Shift+F8,与step over类似,只是函数中的断点全部会disable不会发生作用,所以为Force;

8、 run to cursor(执行到光标):快捷键为Alt+F9,执行到当前光标所在代码,中间如果有断点会在断点处停止;

9、 Force run to cursor(强制执行到光标):快捷键为Ctrl+Alt+F9,执行到当前光标所在代码,中间如果有断点会全部忽略不停止;

10、 Jump to Cursor(跳转到光标):忽略其他代码,直接从当前执行处跳转到当前光标代码行;

11、 resume programe(断点恢复执行):快捷键F9,直接从当前处往下执行,直到遇到下一个断点。

本节介绍了PyCharm的debug方法,可见PyCharm的调测功能还是比较强大的。

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

请大家多多支持,点赞、评论和加关注!谢谢!

第15.3节 PyCharm程序调试功能介绍的更多相关文章

  1. 第15.4节 PyCharm程序代码检测功能介绍

    老猿使用PyCharm有将近一个月了,发现PyCharm并不能很好的完成语法检查,有时运行时突然终止,仔细核查却发现是基本的语法错误,不过有次无意中移动鼠标到代码最右边的边框时发现其实PyCharm有 ...

  2. Python开发环境Wing IDE使用教程:部分调试功能介绍

    下面是用户应该了解的Wing IDE的其它一些调试功能: Main Debug File—用户可以指定项目中的一个文件作为调试的主入口点.当完成这个设置之后,调试总是从这个文件开始,除非用户使用Deb ...

  3. 第15.1节 PyCharm安装及使用

    一. 引言 在本章以前,所有老猿实现的代码都是基于Python自带的解释器IDLE来开发和执行的,很方便.消耗少,但进入PyQt图形界面开发以后,IDLE不能实现和PyQt的集成,且不能支持断点调试, ...

  4. 第15.2节 PyCharm支持Python解释器的配置调整

    上节介绍了PyCharm的安装与简单使用,本节介绍PyCharm相关的配置调整,以支持在PyCharm环境下集成Python解释器进行程序的编译. 一. 工程配置调整 在执行文件前,可能需要对PyCh ...

  5. 第15.5节 PyQt的历史沿革介绍

    当朋友向我推荐PyQt时,老猿才知道有这样一个在Python下的开源的图形界面开发工具,当准备学习PyQt安装时,发现要安装sip.PyQt.PyQt-tools,然后还要进行相关配置.老猿很好奇为什 ...

  6. Google Chrome浏览器调试功能介绍

    作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.ht ...

  7. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

  8. 第15.6节 PyQt5安装与配置

    一. 引言 关于PyQt5的安装网上有很多的文章,老猿也是学习了好多,最后结合其他模块安装的知识发现其实安装很简单,就是直接使用pip或pip3安装就可以了,这样既无需预先下载好软件,也无需担心版本的 ...

  9. 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

随机推荐

  1. Linux sar命令参数详解

    转载自http://www.chinaz.com/server/2013/0401/297942.shtml sar(System Activity Reporter系统活动情况报告)是目前 Linu ...

  2. .NET 5 中的隐藏特性

    前言 双十一当天 .NET 5 正式发布带来了很多的新特性和改进,个人觉得非常香,并且花了 10 分钟时间就把自己的 4 个 .NET Core 3.1 的项目升级到了 .NET 5,堪称无痛. 但是 ...

  3. (2)ElasticSearch在linux环境中集成IK分词器

    1.简介 ElasticSearch默认自带的分词器,是标准分词器,对英文分词比较友好,但是对中文,只能把汉字一个个拆分.而elasticsearch-analysis-ik分词器能针对中文词项颗粒度 ...

  4. bluestore对象挂载到系统进行提取

    前言 之前在filestore里面,pg是直接暴露到文件系统的,也就是可以直接进去查看或者拷贝,在极端情况下,多个osd无法启动,pg无法导出的时候,那么对pg内部对象的操作处理,是可以作为最后恢复数 ...

  5. [LeetCode题解]876. 链表的中间结点 | 快慢指针

    解题思路 使用快慢指针.这里要注意的是,while 的条件会影响当中间节点有两个时,slow 指向的是第一个,还是第二个节点. // 返回的是第一个 while(fast.next != null & ...

  6. __FUNCTION__

  7. vue中插值表达式中时间转换yyyy-MM-dd HH:mm:ss

    vue插值表达式中将时间转换两种方式:一.定义方法 <div id="app">当前实时时间:{{dateFormat(date)}}</div> //时间 ...

  8. 算法学习笔记:Tarjan算法

    在上一篇文章当中我们分享了强连通分量分解的一个经典算法Kosaraju算法,它的核心原理是通过将图翻转,以及两次递归来实现.今天介绍的算法名叫Tarjan,同样是一个很奇怪的名字,奇怪就对了,这也是以 ...

  9. 算法基础——KMP字符串匹配

    原题链接 题目: 给定一个模式串S,以及一个模板串P,所有字符串中只包含大小写英文字母以及阿拉伯数字. 模板串P在模式串S中多次作为子串出现. 求出模板串P在模式串S中所有出现的位置的起始下标. 输入 ...

  10. 全面解析RayFire的动态对象与静态对象

    我们在日常使用RayFire的过程中,接触得比较多的应该就是RayFire的对象设置了.RayFire的对象包含了动态对象.静态对象与休眠对象,其中动态对象.静态对象可以结合动力学.运动学概念设置动作 ...