当你的代码写得多了,你总会出现这样或者那样的错误,有时候代码突然可以用,有时候代码又突然傻逼,有时候你只是离开一会,它就自动好了…就像女生的心思,总是让人捉摸不透,总是那么的魔幻。

今天,小帅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 代码?相关推荐

  1. 如何debug函数_如何使用 pdb 来性感 debug 你的 Python 代码?

    当你的代码写得多了,你总会出现这样或者那样的错误,有时候代码突然可以用,有时候代码又突然傻逼,有时候你只是离开一会,它就自动好了-就像女生的心思,总是让人捉摸不透,总是那么的魔幻. 今天,小帅b来跟你 ...

  2. debug assertion failed!报错

    debug assertion failed!报错.如下图所示,这类报错的原因有很多,我的代码里面报错为 this->SetWindowText("SN串口下载工具");这句 ...

  3. Debug Assertion Failed!

    有些程序在Debug编译的版本下运行会出现Debug   Assertion   Failed! 的错误,在Release版本下没事. 用以下方法可以快速找到错误的地方. 1.按F5运行你的程序 2. ...

  4. 出现问题Debug Assertion Failed!

    出现问题"Debug Assertion Failed!"? 解决方法:创建了一个线程后,没有停止线程. 如 CVorxThread m_queryAgentInfoThread; ...

  5. Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead-nBlockUse)

    Debug Assertion Failed.Expression:_BLOCK_TYPE_IS_VALID(phead->nBlockUse) 关于上面这个错误,我在上一篇文章中的程序遇到过了 ...

  6. python评价指标_详解分类评价指标和回归评价指标以及Python代码实现

    这篇文章介绍的内容是详解分类评价指标和回归评价指标以及Python代码实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下. 1.概念 性能度量(评价)指标,主分为两大类: 1)分类评价 ...

  7. 抛出错误Debug Assertion Failed!

    出现这种情况很可能是使用了野指针,比如某个指针指向一个局部变量,而在该变量作用域外使用该指针引用了该对象. Assertion 是断言,用于假定某个条件肯定会满足,在debug模式下,当该条件不满足时 ...

  8. debug assertion failed是什么意思?_MD5是是什么?为什么很多压缩文件上都有这个东西?...

    有时候我们在网上下载文件的时候,会碰到这样一种情况,网站不仅给出了文件的大小,还给出了一个MD5码,这个MD5码是什么东西. 首先笔者先告诉大家MD5是一种加密算法,而MD5码的作用则是校验文件是否发 ...

  9. Debug Assertion Failed _CrtlsValidHeapPointer(block) realloc堆引发的错误

    应用场景 二级指针的应用中堆的处理 问题描述: realloc后出现堆错误 #include"algorithm.h"//数组插入元素 int insert(int **pp ,i ...

最新文章

  1. MySQL · myrocks · MyRocks之memtable切换与刷盘
  2. 如何解决get和post乱码问题?
  3. Python 学习日记5
  4. Galgame研发日志:那么,怎么才能回本呢?
  5. 两个子集pom互相调用_ConcurrentHashMap 使用:每个 Key 只调用 1 个方法
  6. 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
  7. mysql sqlyog命令_SQLyog的基本使用
  8. Open_source_tools
  9. 互联网电商数据分析常用的指标
  10. 深度学习#1.有监督学习和无监督学习
  11. EXCEL中输入的数字无法正常显示变成科学计数法
  12. flowchart图
  13. Uedit32高亮文件(加强)
  14. web网页设计实例作业 ——中国茶文化(30页) HTML网页制作作品 简单文化网页设计成品 dreamweaver学生网站模板
  15. vue3基础 —— 子传父
  16. 计算机通过变频器模拟输入控制电机正反转,用电脑控制的工频高压系统
  17. java压缩字符串_Java压缩字符串的方法收集
  18. Spring +mybatisplus+shiro权限管理集成整合
  19. 计算机的启动及关闭方法,如何关闭开机启动项
  20. Tensorflow2.5安装(安装问题,这一篇全解决)

热门文章

  1. 拼图登陆拼图二维码验证_如何使用拼图快速轻松地构建静态网站
  2. 异步生成器_使用生成器实现异步并等待
  3. 链栈的入栈和出栈代码_代码简介:全栈开发仍然有效
  4. 利用循环神经网络生成唐诗_可视化解释11种基本神经网络架构
  5. vscode编写go没有代码提示
  6. 随机过程第1讲——泊松过程的模拟与检验
  7. Python爬虫的基本原理
  8. Hive 老当益庄 | 深度解读 Flink 1.11:流批一体 Hive 数仓
  9. __name__ == ‘__main__‘的原理
  10. 漫步微积分十二——隐函数、分数指数