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

最全的Pycharmdebug技巧,来袭!

公众号“菜鸟学Python”第434篇原创,设为“星标”,一起学Python!工欲善其事,必先利其器。无论你的IDE是Int

公众号 “菜鸟学Python”

434篇原创,设为 “星标”,一起学Python!

工欲善其事,必先利其器。无论你的 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 行);

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 保存设置。

修改后运行的效果如下:

辛苦熬夜整理的debug 技巧就分享到这里,原创不易,欢迎小伙伴们在评论区留言吱一声。

如果觉得本篇写的觉得对你有用,可以收藏或者给菜鸟哥来个三连哦!再次谢谢!

程序员GitHub,现已正式上线!接下来我们将会在该公众号上,专注为大家分享GitHub上有趣的开源库包括Python,Java,Go,前端开发等优质的学习资源和技术,分享一些程序员圈的新鲜趣事。

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密 

  • 4).80行代码!用Python做一个哆来A梦分身 

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷 

  • 6).30个Python奇淫技巧集 

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货 

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点这里,获取腾讯课堂畅学卡


推荐阅读
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • PyCharm 作为 JetBrains 出品的知名集成开发环境(IDE),提供了丰富的功能和强大的工具支持,包括项目视图、代码结构视图、代码导航、语法高亮、自动补全和错误检测等。本文详细介绍了 PyCharm 的高级使用技巧和程序调试方法,旨在帮助开发者提高编码效率和调试能力。此外,还探讨了如何利用 PyCharm 的插件系统扩展其功能,以满足不同开发场景的需求。 ... [详细]
  • 基于MATLAB的灰度图像直方图均衡化技术实现与分析
    本文利用MATLAB实现了灰度图像的直方图均衡化技术,并对其性能进行了详细分析。通过该方法,图像的对比度得到了显著提升,使得图像细节更加清晰可见。实验结果表明,该算法在处理低对比度图像时具有良好的效果。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在解决区间相关问题时,我发现自己经常缺乏有效的思维方式,即使是简单的题目也常常需要很长时间才能找到解题思路,而一旦得到提示便能迅速理解。题目要求对一个包含n个元素的数组进行操作,并给出一个参数k,具体任务是…… ... [详细]
  • 利用Python进行学生学业表现评估与成绩预测分析
    利用Python进行学生学业表现评估与成绩预测分析 ... [详细]
  • Python 实战:异步爬虫(协程技术)与分布式爬虫(多进程应用)深入解析
    本文将深入探讨 Python 异步爬虫和分布式爬虫的技术细节,重点介绍协程技术和多进程应用在爬虫开发中的实际应用。通过对比多进程和协程的工作原理,帮助读者理解两者在性能和资源利用上的差异,从而在实际项目中做出更合适的选择。文章还将结合具体案例,展示如何高效地实现异步和分布式爬虫,以提升数据抓取的效率和稳定性。 ... [详细]
  • 本文深入探讨了Java中比较运算符的使用及其在实际编程中的应用场景。通过详细分析等于、不等于、大于、小于等运算符的特性与用法,帮助开发者更好地理解和掌握这些基本但重要的语法元素。此外,文章还结合具体示例,展示了如何在复杂逻辑判断中高效利用比较运算符,提高代码的可读性和执行效率。 ... [详细]
  • 在Python多进程编程中,`multiprocessing`模块是不可或缺的工具。本文详细探讨了该模块在多进程管理中的核心原理,并通过实际代码示例进行了深入分析。文章不仅总结了常见的多进程编程技巧,还提供了解决常见问题的实用方法,帮助读者更好地理解和应用多进程编程技术。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • 《Intel IA-32 架构软件开发人员手册详尽指南》提供了详尽的 IA-32 架构技术文档,涵盖指令集、系统编程和硬件接口等内容,为软件开发人员提供全面的技术支持和参考。该手册不仅包括详细的架构说明,还提供了丰富的编程示例和最佳实践,帮助开发人员更好地理解和应用 IA-32 架构。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 在MPAndroidChart中,当滑动至最后一个数据点时自动加载更多数据
    在MPAndroidChart中,当用户滑动图表至最后一个数据点时,系统将自动触发加载更多数据的功能,以提供连续的数据展示体验。这一机制特别适用于需要动态更新数据的场景,如实时监控和数据分析应用。 ... [详细]
  • 在C#中开发多线程应用程序变得高效且简便,与之前使用VB时的复杂性和局限性形成鲜明对比。C#不仅提供了丰富的多线程编程模型,还简化了线程管理、同步和通信等关键任务,使得开发者能够更加轻松地构建高性能的应用程序。此外,C#的异步编程特性进一步增强了多线程应用的开发效率和可维护性。 ... [详细]
author-avatar
Ruby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有