debug assertion failed是什么意思?_如何使用 pdb 来性感 debug 你的 Python 代码?
当你的代码写得多了,你总会出现这样或者那样的错误,有时候代码突然可以用,有时候代码又突然傻逼,有时候你只是离开一会,它就自动好了…就像女生的心思,总是让人捉摸不透,总是那么的魔幻。
今天,小帅b来跟你说说 debug ,其实 debug 还是挺重要的,它除了可以帮助你自己发现代码自身的 bug 之外,你还可以通过 debug 清楚的知道代码的执行流程,比如变量是怎么赋值的,数据是如何改变的等等,你都可以通过 debug 手段清楚的看到这些玩意的变化。
除此之外,当你在学习一个新的库或者新的代码特性的时候,debug 也是常用的学习手段,因为你可以通过它更容易理解代码为什么是那样写的。
接下来我会跟你说说 Python 内置的 debug 工具 pdb 的使用。
我们先来看看这样的例子:
很简单,这里我们定义了个方法,然后传递参数 name 返回一个字符串。
不过你可以看到第二行调了一个 breakpoint 方法,这是打断点的意思,它是 Python 内置的,直接调用即可,接着我们来运行一下这个 py:
这时候可以看到:
第一行:> 后面告诉我们打断点的位置
第二行:-> 就是此刻 Python 执行到的暂停位置(因为我们在此前打了断点了)
第三行:(pdb):意思是说我们可以使用 pdb 这个工具的相关命令了。
如果你不知道如何使用 pdb 的调试命令,可以输入 help 得到相关的帮助:
在这里我跟你说下 pdb 常常会用到的几个命令的意思:
1、p + 参数 :查看参数的值2、n :单步跳过3、s :单步进入4、c :继续执行5、w :显示上下文信息6、a :查看函数的参数列表7、ll : 列出当前的源码8、b : 设置断点9、q : 退出 debug
比如现在我们想知道参数 name 的值是什么,我们就可以这样:
显示参数:
显示上下文信息:
执行当前代码(单步进入):
继续执行:
在 debug 的过程中,你还可以修改参数的值,比如把 name 直接改成 sb:
列出当前的源码:
我刚给你演示的这些是在 Python3.8 版本下执行的,如果你用的是 Python 3.7 以下的版本,是用不了 breakpoint 这个函数的:
所以如果想要在 Python3.7 以下的版本使用 pdb ,那么你就需要自行导入了,并且你要打断点的话应该调用的是 set_trace():
那么这个时候,你就可以在 Python3.7 以下的版本使用 pdb 了:
当然,你还可以什么断点都不设置,使用命令的方式执行 pdb ,比如我们把刚刚的断点都去掉:
接着我们通过 pdb 命令来执行它:
python3 -m pdb xxx.py
这时候可以看到,它是直接从第一行开始打断点:
哦对了,如果你使用 VIM 编辑器的话,可以使用 repl 插件结合 ipdb 实现调试,像我这样:
ok,以上,希望对你有帮助,我们下回见,peace!
点击留言
扫一扫
学习 Python 没烦恼
debug assertion failed是什么意思?_如何使用 pdb 来性感 debug 你的 Python 代码?相关推荐
- 如何debug函数_如何使用 pdb 来性感 debug 你的 Python 代码?
当你的代码写得多了,你总会出现这样或者那样的错误,有时候代码突然可以用,有时候代码又突然傻逼,有时候你只是离开一会,它就自动好了-就像女生的心思,总是让人捉摸不透,总是那么的魔幻. 今天,小帅b来跟你 ...
- debug assertion failed!报错
debug assertion failed!报错.如下图所示,这类报错的原因有很多,我的代码里面报错为 this->SetWindowText("SN串口下载工具");这句 ...
- Debug Assertion Failed!
有些程序在Debug编译的版本下运行会出现Debug Assertion Failed! 的错误,在Release版本下没事. 用以下方法可以快速找到错误的地方. 1.按F5运行你的程序 2. ...
- 出现问题Debug Assertion Failed!
出现问题"Debug Assertion Failed!"? 解决方法:创建了一个线程后,没有停止线程. 如 CVorxThread m_queryAgentInfoThread; ...
- Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead-nBlockUse)
Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead->nBlockUse) 关于上面这个错误,我在上一篇文章中的程序遇到过了 ...
- python评价指标_详解分类评价指标和回归评价指标以及Python代码实现
这篇文章介绍的内容是详解分类评价指标和回归评价指标以及Python代码实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下. 1.概念 性能度量(评价)指标,主分为两大类: 1)分类评价 ...
- 抛出错误Debug Assertion Failed!
出现这种情况很可能是使用了野指针,比如某个指针指向一个局部变量,而在该变量作用域外使用该指针引用了该对象. Assertion 是断言,用于假定某个条件肯定会满足,在debug模式下,当该条件不满足时 ...
- debug assertion failed是什么意思?_MD5是是什么?为什么很多压缩文件上都有这个东西?...
有时候我们在网上下载文件的时候,会碰到这样一种情况,网站不仅给出了文件的大小,还给出了一个MD5码,这个MD5码是什么东西. 首先笔者先告诉大家MD5是一种加密算法,而MD5码的作用则是校验文件是否发 ...
- Debug Assertion Failed _CrtlsValidHeapPointer(block) realloc堆引发的错误
应用场景 二级指针的应用中堆的处理 问题描述: realloc后出现堆错误 #include"algorithm.h"//数组插入元素 int insert(int **pp ,i ...
最新文章
- MySQL · myrocks · MyRocks之memtable切换与刷盘
- 如何解决get和post乱码问题?
- Python 学习日记5
- Galgame研发日志:那么,怎么才能回本呢?
- 两个子集pom互相调用_ConcurrentHashMap 使用:每个 Key 只调用 1 个方法
- 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
- mysql sqlyog命令_SQLyog的基本使用
- Open_source_tools
- 互联网电商数据分析常用的指标
- 深度学习#1.有监督学习和无监督学习
- EXCEL中输入的数字无法正常显示变成科学计数法
- flowchart图
- Uedit32高亮文件(加强)
- web网页设计实例作业 ——中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板
- vue3基础 —— 子传父
- 计算机通过变频器模拟输入控制电机正反转,用电脑控制的工频高压系统
- java压缩字符串_Java压缩字符串的方法收集
- Spring +mybatisplus+shiro权限管理集成整合
- 计算机的启动及关闭方法,如何关闭开机启动项
- Tensorflow2.5安装(安装问题,这一篇全解决)
热门文章
- 拼图登陆拼图二维码验证_如何使用拼图快速轻松地构建静态网站
- 异步生成器_使用生成器实现异步并等待
- 链栈的入栈和出栈代码_代码简介:全栈开发仍然有效
- 利用循环神经网络生成唐诗_可视化解释11种基本神经网络架构
- vscode编写go没有代码提示
- 随机过程第1讲——泊松过程的模拟与检验
- Python爬虫的基本原理
- Hive 老当益庄 | 深度解读 Flink 1.11:流批一体 Hive 数仓
- __name__ == ‘__main__‘的原理
- 漫步微积分十二——隐函数、分数指数