Pycharm Debug调试技巧

news2025/1/22 16:12:23

Pycharm Debug调试

Python中的Bug是指程序在执行过程中出现错误的情况。这些错误可能会导致程序崩溃、输出意外的结果或者根本不运行。

常见的Python Bug包括:

  1. 语法错误:例如拼写错误、缺少冒号、使用了错误的缩进等等。
  2. 逻辑错误:程序可以运行,但是它并没有如预期那样工作。这通常是因为代码中的算法或逻辑有问题。
  3. 运行时错误:在程序运行时出现的错误,例如尝试访问不存在的变量、除以零、类型不匹配等等。

要解决这些Bug,可以使用pycharm调试工具来检查代码,并尝试添加断点和打印语句以查看变量的值。

接下来介绍PyCharm Debug调试

Pycharm Debug是一种强大的调试工具,可以帮助Python开发人员快速定位和修复代码中的错误。通过在代码中设置断点并控制程序的执行,使用者可以逐行查看程序的运行状态、变量值以及函数调用等信息,从而更好地理解代码的执行过程。

PyCharm Debug调试步骤:

  1. 在代码中设置断点:在您想要暂停执行的位置单击行号区域,或者右键单击并选择“Toggle Breakpoint”选项。
  2. 进入Debug模式,或者按下快捷键“Shift+F9”。
  3. 运行程序,在代码执行到您设置的断点处时会自动暂停。此时您可以使用调试工具栏上的各种功能:
  4. 调试完成后,单击调试面板上的“Terminate”按钮或工具栏上的“Stop”按钮来终止程序的执行。

演示代码:

def sum_num(x, y):
    z = x + y * 3
    return z

def divide_num(x, y):
    z = y / x
    return z

if __name__ == '__main__':
    result1 = sum_num(3, 5)
    result2 = divide_num(3, 5)
    result = result1 + result2
    print(result)

1.打断点

一个断点标记了一个代码行,当Pycharm运行到该行代码时会将程序暂时挂起。
注意断点会将对应的代码行标记为红色,取消断点的操作也很简单,在同样位置再次单击即可。 如图所示,打了2个断点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NXUUwD3z-1681608401359)(image-20230414160627062.png)]

2.Debug调试

进入调试的四种方式:

第一种:通过鼠标右击代码处,可以来debug程序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4upn2r6l-1681608401369)(image-20230414182154558.png)]

第二种:通过代码点击python主程序入口,然后点击Debug

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ywBGyqN-1681608401372)(image-20230414182352947.png)]

第三种:通过右上角的Debug按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N1g35vra-1681608401373)(image-20230414182922900.png)]

第四种:通过在最下边的Debug中点击Debug按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-orkNCnFC-1681608401374)(image-20230414183244020.png)]

进入Debug调试后,Pycharm会执行以下动作:

(1)PyCharm开始运行py程序,并在第一个断点处暂停

(2)断点所在代码行变蓝,意味着Pycharm程序进程已经到达断点处,但尚未执行断点所标记的代码。

(3)Debug tool window窗口出现,显示当前重要调试信息,并允许用户对调试进程进行更改。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyg2Ohy4-1681608401375)(image-20230414183459568.png)]

3.debug窗口图标分别代表的含义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5HHC6Ph-1681608401376)(image-20230414185114448.png)]

1.show execution point (F10)

显示当前所有的断点。

2.step over(F8) 逐语句执行

单步调试。点击它可以执行当前行并停在下一行代码上。若函数A内存在子函数a时,不会进入子函数a内执行单步调试,而是把子函数a当作一个整体,一步执行。

3.step into(F7) 单步调试,逐步进入。

这个图标可以让你进入函数内部,逐行执行其中的代码。

4.step into my code(Alt + Shift +F7)

执行下一行但忽略libraries(导入库的语句)。如果该函数是你自己编写的,那么你就可以通过逐步进入来深入了解函数的执行过程并进行调试。

5.step out(Shift+F8)

从当前函数或方法中退出并继续执行直到再次遇到断点;

当目前执行在子函数a中时,选择该调试操作可以直接跳出子函数a,而不用继续执行子函数a中的剩余代码。并返回上一层函数。

6.run to cursor(Alt +F9)

直接跳到下一个断点。

4.控制台窗口图标代表的含义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HU8QcrvA-1681608401377)(image-20230414190315945.png)]

1.Rerun *(Ctrl+F5)

重新debug此程序。

2.Resume program (F9)

放过当前断点,直接跳到下一个断点,如果无下一个断点,则程序结束。

3.Pause program

暂停当前程序,方便调试

4.Stop(ctrl+F2)

停止Debug模式,关闭正在运行的程序

5.View Breakpoints

显示所有断点

6.Mute Breakpoints

让所有的断点失效

总之,Pycharm Debug是Python开发必备的调试工具之一,使用者应该学会如何使用它来简化自己的编程工作,以解决在python编程中遇到的一些问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434229.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

草图大师su通过照片建模建筑 零插件sketchup

打开sketchup,相机-匹配新照片。照片的要求: “匹配照片”最适合主要由直角组成的结构。您肯定至少需要一个直角才能使用匹配照片。使用从角落以大约 45 度角拍摄的照片。上图来自谷歌街景图是以 45 度角拍摄的图像示例。如果您正在拍照,则可…

模糊数学求传递闭包(C语言)

一、问题描述 我们在模糊数学中利用传递闭包法进行聚类分析的时候,需要求模糊相似矩阵的传递闭包,对于阶数比较高的矩阵,手工计算太过于繁琐,我们可以借助程序实现。 我们先来看一下模糊矩阵的合成规则: 设为有限论域…

ChatGPT能取代传统伪原创工具吗?

文章伪原创工具是一种计算机辅助写作工具,通过算法和技术实现对原有文章内容进行修改和改写,生成新的、看起来不同于原文的文章,以达到避免抄袭和提高原创性的目的。今天我们来聊聊传统伪原创工具和使用ChatGPT进行文章改写的优缺点。 一、传…

【状态估计】电力系统状态估计的虚假数据注入攻击建模与对策(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C++ Linux Web Server 面试基础篇-操作系统(一、Linux基础)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

SpringBoot访问静态资源和jar外部静态资源,部署前端打包后的vue项目放入静态资源里

记录一下使用SpringBoot访问静态资源和SpringBoot打包之后的jar外部静态资源,在开发的时候,一般选择前后端分离的方式,前端使用vue 后端使用SpringBoot,通常情况下,部署都是前端通过http去请求后端资源,涉及…

CVE-2021-27905 Apache Solr SSRF漏洞

预备知识 1. 漏洞信息 漏洞编号:CVE-2021-27905 漏洞名称:Apache Solr SSRF漏洞 漏洞描述:Apache Solr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是Apache Lucene项目的开源…

在Claude穿越千年,问了孔子人生问题

📕如果大家还不知道Claude的话,可以先了解下,它是chatgpt最大的竞争对手。他有很多的知识,能做的事情也非常的多。 今天我们就让他用孔子的思想来跟我们对话,看看他会怎么回答我们的人生问题。 我们先问问他&#xf…

组播协议的RP

某组播网络示意图如图,其中MCS1是组播地址(G1)的组播源,PC1和PC2是组G1的接收者。 1.上述组播网络中,端口1、2、3需要运行哪些协议,为什么需要运行这些协议?(仅填必配的组播协议)详细写出具体原因 结合上述拓扑,考虑到存在RP场景,因此运行组播路由协议为PIM-SM协议,…

『pyqt5 从0基础开始项目实战』07. 次数清零与多行数据删除(保姆级图文)

目录 导包和框架代码 次数清零按钮添加绑定事件实现数据清零 数据删除按钮添加绑定事件实现删除功能完整代码总结 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏,持续更新中 导包和框架代码 请…

GEE:Gmeans图像分割

G-means是一种聚类算法,它是基于K-means算法的改进版本。K-means算法的一个主要缺点是需要事先指定聚类的数量,而G-means算法则可以自动确定聚类的数量。 G-means算法使用了类似于K-means的迭代过程,但在每次迭代时,它会检查每个聚类是否可以继续细分为两个子聚类。这个检…

保护你的数字资产:网络安全的重要性和应对策略

网络安全已经成为现代企业和组织的重要问题。在数字化的时代,网络攻击和安全威胁的规模和复杂性不断增加,因此保护数字资产变得越来越重要。而Log360作为一款全面的网络安全解决方案,可以帮助企业识别、分析和应对网络安全威胁,从…

【PyTorch】第六节:乳腺癌的预测(二分类问题)

作者🕵️‍♂️:让机器理解语言か 专栏🎇:PyTorch 描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语💓:🐾没有白走的路,每一步都算数&#…

【SCI电气】考虑不同充电需求的电动汽车有序充电调度方法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Python】【进阶篇】二十、Python爬虫实现Cookie模拟登录

目录 二十、Python爬虫实现Cookie模拟登录20.1 注册登录20.2 分析网页结构20.3 编写完整程序 二十、Python爬虫实现Cookie模拟登录 在使用爬虫采集数据的规程中,我们会遇到许多不同类型的网站,比如一些网站需要用户登录后才允许查看相关内容&#xff0c…

【获奖案例巡展】信创先锋之星——甘肃省住房和城乡建设厅住建数据大脑

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目,星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动,旨在为各行业提供更多的优秀产品案例,彰显技术改变世界的力量&#xff0…

推进数字化转型进程,AntDB数据库协同神州云动共促新发展

当今,数字化转型已成为企业发展的必由之路。随着新技术的不断发展和市场的日益竞争,越来越多的企业开始意识到数字化转型的重要性,在帮助企业数字化转型过程中,高效的客户关系管理软件和具有灵活性、可伸缩的数字底座,…

关于于pyreadline模块的py3k_compat.py的函数collections.Callable兼容性问题

上图警告的官网链接地址 上图警告信息是一个警告信息,提醒你在代码中使用了即将被弃用的函数或配置项,建议及时修改以避免在将来的版本中出现不兼容的情况。具体解释如下: 这段段警告信息来自于pyreadline模块的py3k_compat.py文件,提示你使用了collections模块中即将被弃用…

code=45, title=禁止登录, message=登录失败,建议升级最新版本后重试,或通过问题反馈与我们联系。

如果你是采用 java 开发的,你可以参考本文章,java 和 kotlin 都是可以相互转换的。 在解决之前,先说明环境: JDK版本:java version "17.0.3.1" 【Oracle JDK】 Kotlin版本:1.8.20 采取simbot核心包开发&am…

PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning论文学习

一、概述 Motivation:直接提升PLATO的size训练不work Methods: 通过curriculum learning技术来构建一个高质量的开放领域机器人第一阶段:coarse-gained generation model:再简单的one-to-one框架下学习粗力度的回复生成模型第二…