热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

厉害了!最全的Pycharmdebug技巧,来袭!

工欲善其事,必先利其器。无论你的IDE是IntelliJIDEA、Pycharm、WebStorm、GoLang、还是PhpStorm,调试器都是标配。

图片

工欲善其事,必先利其器。无论你的 IDE 是 IntelliJ IDEA、Pycharm、WebStorm、GoLang、还是PhpStorm ,调试器都是标配。在遇到有问题的程序时,合理的利用调试器的跟踪和断点技巧,可以很快的定位出问题原因。下面让我们以 Pycharm 为例,一起来系统的学习下 IDE 的调试技巧吧。

 

01.Debug 运行方式

在代码所在行号处左击鼠标,就会设置一个行断点。点击 Pycharm 右上角的小虫子图标按钮,就会以 DeBug 的方式运行代码。下面是 DeBug 工作界面的简单介绍。

02.菜单按钮功能介绍

平常 Debug 代码,常用到的一些调试按钮如下,蓝颜色的字体是按钮的名称:

 

1).Resume Programe:

恢复程序,比如,你在第 12 行和 16 行有两个断点,当前运行至第 12 行,按 Resume Programe ,则运行到下一个断点(即第 16 行);

图片

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:810735403

2).Step Over:

一行一行地往下走,如果这一行上有方法, 不会进入方法。例如下面第 17 行代码有自己的实例方法,点击 Step Over 按钮调试代码就不会进入这个实例方法。

图片

3).Step into:

强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

4).Step Into My Code

为单步进入,如果当前行有自定义的方法,会进入方法内部,但不会进入官方类库的方法,效果如下:

图片

 

03.常用的 DeBug 小技巧

1).断点条件调试

有这样一个场景,代码 DeBug 的时候,我想知道下面代码 index 为 10 时, date_1的值是什么,正常来说要 代码 DeBug 循环 10 次,很不方便。

在 IDE 中有个条件断点,只需设置好变量条件,只有当某个变量等于你设置的条件的值时,断点就会自动停下。首先右击第 24 行的断点,给 Conditon 设置变量条件 index == 10,并点击 Done 保存设置。

 

当 index 的值为 10 时,DeBug 就会自动停下,效果如下图:

 

2).计算表达式

当我们 Debug 某个方法时,有时候会忘了传入某个参数或者传错了,这个时候又不想重新Debug,就可以通过计算表达式来设置某个变量的值,如下图,发现 day_int = 367 不是期望的值,可以鼠标右击下面蓝色的 day_int , 选择 Set Value, 对 day_int 临时修改值

下面的代码程序会根据重新赋的值向下运行,可以看到变量 num_30 的值是 200 整除 30 的结果。

 

3).多线程调试

有时候发现对多线程并发代码无法调试, 并不会所有断点都走到,代码中 87 行的 args 里的变量给了 6个 值,线程并发数量设置为 3 个,第 71 行的断点调试我只循环了 2 次,正常来说应该循环 6 次,如下图:

图片

出现上面的情况是因为 IDE 在 Debug 时默认阻塞级别是 Thread,解决办法是将它的阻塞级别改为 All, 阻塞其它线程,只有在当前调试线程走完时才会走其它线程。配置方法是右击断点,Suspend 的值改为 All ,再点击 Make Default, 最好点击 Done 保存设置。

 

修改后运行的效果如下:

图片

在这里还是要推荐下我自己建的Python开发交流学习(qq)群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和高级开发教程,欢迎进阶中和想深入Python的小伙伴!


推荐阅读
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • PyCharm 作为 JetBrains 出品的知名集成开发环境(IDE),提供了丰富的功能和强大的工具支持,包括项目视图、代码结构视图、代码导航、语法高亮、自动补全和错误检测等。本文详细介绍了 PyCharm 的高级使用技巧和程序调试方法,旨在帮助开发者提高编码效率和调试能力。此外,还探讨了如何利用 PyCharm 的插件系统扩展其功能,以满足不同开发场景的需求。 ... [详细]
  • 在Python编程中,探讨了并发与并行的概念及其区别。并发指的是系统同时处理多个任务的能力,而并行则指在同一时间点上并行执行多个任务。文章详细解析了阻塞与非阻塞操作、同步与异步编程模型,以及IO多路复用技术的应用。通过模拟socket发送HTTP请求的过程,展示了如何创建连接、发送数据和接收响应,并强调了默认情况下socket的阻塞特性。此外,还介绍了如何利用这些技术优化网络通信性能和提高程序效率。 ... [详细]
  • Python学习:环境配置与安装指南
    Python作为一种跨平台的编程语言,适用于Windows、Linux和macOS等多种操作系统。为了确保本地已成功安装Python,用户可以通过终端或命令行界面输入`python`或`python3`命令进行验证。此外,建议使用虚拟环境管理工具如`venv`或`conda`,以便更好地隔离不同项目依赖,提高开发效率。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在Python多进程编程中,`multiprocessing`模块是不可或缺的工具。本文详细探讨了该模块在多进程管理中的核心原理,并通过实际代码示例进行了深入分析。文章不仅总结了常见的多进程编程技巧,还提供了解决常见问题的实用方法,帮助读者更好地理解和应用多进程编程技术。 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 在Python 2.7环境中使用PyCharm进行Cvxopt的安装及线性规划问题求解。具体步骤包括:通过PyCharm的文件菜单进入项目设置,选择解释器选项,点击右侧的“+”按钮,在可用包列表中搜索并安装Cvxopt。安装完成后,可以通过导入Cvxopt库并调用其函数来解决线性规划问题,提高模型的准确性和效率。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
author-avatar
手机用户2502920971
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有