您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

全网最实用的Debug调试技巧汇总

时间:2019-08-14 11:02:51  来源:  作者:

一、思考

1、什么是debug

● 找茬

◆ 找软件的茬

◆ 发现程序的缺陷

2、为什么需要debug?

 

● 谁都不敢保证,写的代码没有任何问题

● 高效查找软件异常

● 一位优秀的开发工程师

◆ 20%的时间写代码

◆ 80%的时间用来排错

“不会debug” == “不会代码” == “低工资”

3、debug需要具备哪些功能?

全网最实用的Debug调试技巧汇总

 

● 控制程序的执行

◆ 想停则停,想执行则执行

◆ 随心所欲

● 设置断点

◆ 在指定位置停止

● 查看当前命名空间(程序栈)中变量

二、Python中的Debug大法

案例代码如下所示:

创建deubg_skills_demo.py文件

全网最实用的Debug调试技巧汇总

 


全网最实用的Debug调试技巧汇总

 


全网最实用的Debug调试技巧汇总

 

创建gifts.py文件

全网最实用的Debug调试技巧汇总

 

1、Pdb操作

全网最实用的Debug调试技巧汇总

 

● 系统自带的debug工具(无需安装)

● 将以下代码放在需要调试的地方(类似于设置断点)

全网最实用的Debug调试技巧汇总

 

● 当程序执行到上述代码所在位置时,会自动开启一个console终端

◆ "->"是接下来要执行的代码(当前还未执行)

全网最实用的Debug调试技巧汇总

 

● 可以在终端运行的命令

◆ list或者l

◆ 显示当前运行的代码

◆ 默认列出11行代码

全网最实用的Debug调试技巧汇总

 

● p变量名或者p需要运行的表达式

◆ 打印变量的值

全网最实用的Debug调试技巧汇总

 

● step或者s

◆ 如果在函数调用处执行,则会进入函数体内部

全网最实用的Debug调试技巧汇总

 


全网最实用的Debug调试技巧汇总

 

● next或者n

◆如果在函数调用处执行,则不会进入函数体内部

全网最实用的Debug调试技巧汇总

 

● enter

◆ 重复执行上一次的命令

● b(reak) [ ([filename:]lineno | function) [, condition] ]

◆ 设置断点

◆ filename可选,如果不传,默认在当前文件设置断点

全网最实用的Debug调试技巧汇总

 


全网最实用的Debug调试技巧汇总

 

● c或者continue

◆ 继续往下运行,在下一个断点处停下来

全网最实用的Debug调试技巧汇总

 

● disable断点编号

◆ 禁用断点

全网最实用的Debug调试技巧汇总

 

● enable断点编号

◆ 启用断点

● cl或者clear 断点编号

◆ 清除断点

全网最实用的Debug调试技巧汇总

 

● display或者undisplay 变量

◆ 监听或者不监听某个变量

◆ 如果变量值改变,会自动显示

全网最实用的Debug调试技巧汇总

 

● h或者help

◆ 帮助信息

全网最实用的Debug调试技巧汇总

 

● h具体命令

◆ 具体命令的帮助文档

● h pdb

◆ pdb的完整文档

三、Pycharm debug操作

全网最实用的Debug调试技巧汇总

 

1、打开Python Prompt

全网最实用的Debug调试技巧汇总

 

会出现一个ipython的控制台

● 可在控制台查看当前命名空间中的变量

● 也可执行Python表达式

全网最实用的Debug调试技巧汇总

 

2、Step Over/F8

● 按调试工具栏中的

全网最实用的Debug调试技巧汇总

 

● 类似于pdb中的next

● 程序不会进入到函数体内部

3、Step Into/F7

● 按调试工具栏中的

全网最实用的Debug调试技巧汇总

 

● 类似于pdb中的step

● 程序会进入到函数(方法)体内部、系统源码、第三方模块源码中

4、Step Out/Shift+F8

● 从函数体内部跳出

全网最实用的Debug调试技巧汇总

 

5、Step Into My Code

Step Into My Code / ALT+Shift+F7

● 按调试工具栏中的

全网最实用的Debug调试技巧汇总

 

● 主要关注自己写的代码

● 从系统源码、第三方模块源码中跳到自己写的代码中

6、Evaluate Expression

全网最实用的Debug调试技巧汇总

 

● 在当前命名空间内计算表达式的值

7、Quick Evaluate Expression

● 快速计算表达式的值

全网最实用的Debug调试技巧汇总

 


全网最实用的Debug调试技巧汇总

 

8、Watching

全网最实用的Debug调试技巧汇总

 

● 类似于pdb中的display

● 可以监听某个变量或者表达式的值

四、总结

全网最实用的Debug调试技巧汇总

 

● 作为代码编写者,掌握代码的调试技巧是必备的

● 能提升工作效率,提高代码质量

● Python中Debug调试工具和技巧非常多

● 最常用、最实用的知识点,本文均有覆盖

本文由柠檬班可优老师原创,转载需注明出处!



Tags:Debug   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
昨天看到一个问题,“疫情结束后你最想吃什么?”仔细想了一下,火锅?烤肉?看了一下体重秤,怕是只能报个健身房了。你以为你胖N斤的时间复杂度是O(2^N), 事实上它是O(1),嗖嗖的.正文回...【详细内容】
2021-09-13  Tags: Debug  点击:(44)  评论:(0)  加入收藏
前言当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。而除了这些,Arthas 是一款...【详细内容】
2021-06-25  Tags: Debug  点击:(130)  评论:(0)  加入收藏
不知道大家有没有经历过线上接口对接,简单地来说。就是对接公司只能把接口放在服务器上。因为一些网络问题,所以你的程序也只能放在服务器上。如果全是对的接口还OK,如果有一个...【详细内容】
2021-06-17  Tags: Debug  点击:(122)  评论:(0)  加入收藏
文章简述在本次的文章中,按照个人的刷题计划,会分享关于链表的 3 道简单级别的算法题(可是依然感觉不简单)但是不要紧,从本篇文章开始分享的算法题个人都会把关于这道题的全部代...【详细内容】
2021-02-26  Tags: Debug  点击:(171)  评论:(0)  加入收藏
笔者从事Web开发,不论是PC端还是APP端,调试抓包都是必不可少的环节,懂前端的人都知道,PC端调试非常方便,Chrome或者火狐等浏览器等都自带了非常方便且易于使用的开发者工具,便于我...【详细内容】
2020-12-30  Tags: Debug  点击:(196)  评论:(0)  加入收藏
最近发现 Spring Boot 本地不能 Debug 调试了,原来 Spring Boot 升级后,对应插件的命令参数都变了,故本文做一个升级。背景:Spring Boot 项目在使用 Spring Boot Maven 插件执行...【详细内容】
2020-11-11  Tags: Debug  点击:(121)  评论:(0)  加入收藏
本文主要分如下几个部分展开:- Linux服务器安装RocketMQ、RocketMQ-Console- IDEA中搭建可调试环境 1、Linux安装RocketMQ、RocketMQ-Console 1.1安装RocketMQStep1:从如下地...【详细内容】
2020-10-12  Tags: Debug  点击:(78)  评论:(0)  加入收藏
Hello大家好,我是兼容机之家的小牛。如果你加入了一个电脑硬件爱好者的群,那么你肯定会发现一件事,那就是每天都会有小白装机点不亮在群里求助,问群问了大半天也没弄好。小牛今...【详细内容】
2020-08-08  Tags: Debug  点击:(158)  评论:(0)  加入收藏
无线用户连接使用WiFi时有抱怨说,微信连接正常,但是有时候发送图片甚至短消息时出现转圈现象。刷抖音、腾讯视频、看B站或是开启浏览器时部分图片打不开,开启某一个视屏时一直...【详细内容】
2020-08-06  Tags: Debug  点击:(65)  评论:(0)  加入收藏
在开发过程中,遇到问题,我们经常会使用搜索引擎来查找问题的解决方案,然后予以解决。但是有些问题一时半会搜索不到解决方案,需要自己去解决。这里分享下我解决这些问题使用的调...【详细内容】
2020-08-06  Tags: Debug  点击:(43)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条