pdb--python调试利器
发布时间 - 2025-07-18 00:00:00 点击率:次一、调试模块
要调试模块,可以使用Python的pdb模块。以下是如何在模块中使用pdb的示例:
>>> import pdb
>>> import mymodule
>>> pdb.run('mymodule.test()')
> (0)?()
(Pdb) continue
> (1)?()
(Pdb) continue
NameError: 'spam'
> (1)?()
(Pdb) 二、调试脚本
要调试脚本,可以使用Python的pdb模块启动调试器。以下是如何在脚本中使用pdb的示例:
python3 -m pdb myscript.py
三、代码中打堆栈(3.7版本内置了该功能)
在代码中设置断点并进入调试模式,可以使用以下命令:
import pdb;pdb.set_trace()
四、查看crashed program
如果程序崩溃,可以使用pdb查看崩溃时的堆栈信息。以下是如何在崩溃后使用pdb的示例:
>>> import pdb >>> import mymodule >>> mymodule.test() Traceback (most recent call last): File "", line 1, in File "./mymodule.py", line 4, in test test2() File "./mymodule.py", line 3, in test2 print(spam) NameError: spam >>> pdb.pm() > ./mymodule.py(3)test2() -> print(spam) (Pdb)
五、主要函数
六、实现自定义功能可以修改pdb.Pdb类
可以通过修改pdb.Pdb类来实现自定义调试功能。例如,要跳过特定模块,可以这样做:
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
七、调试命令
以下是pdb调试器中常用的命令:
- h(elp) [command]:显示帮助信息或特定命令的帮助信息。
- w(here):打印堆栈跟踪,最近的帧在底部。箭头指示当前帧。
- d(own) [count]:将当前帧向下移动count级(默认为1级),进入较新的帧。
- u(p)[count]:将当前帧向上移动count级(默认为1级),进入较旧的帧。
- b(reak) [([filename:]lineno | function) [, condition]]:设置断点。
- tbreak [([filename:]lineno | function) [, condition]]:设置临时断点。
- cl(ear) [filename:lineno | bpnumber ...]:清除断点。
- disable [bpnumber ...]:禁用断点。
- enable [bpnumber ...]:启用断点。
- ignore bpnumber [count]:设置断点的忽略计数。
- condition bpnumber [condition]:为断点设置条件。
- commands [bpnumber]:为断点指定命令列表。
- s(tep):执行当前行,在第一次可能的场合停止
。 - n(ext):继续执行直到当前函数的下一行或返回。
- unt(il) [lineno]:继续执行直到达到当前行号之后的行。
- r(eturn):继续执行直到当前函数返回。
- c(ont(inue)):继续执行,仅在遇到断点时停止。
- j(ump) lineno:设置将要执行的下一行。
- l(ist) [first[, last]]:列出当前文件的源代码。
- ll | longlist:列出当前函数或帧的所有源代码。
- a(rgs):打印当前函数的参数列表。
- p expression:在当前上下文中评估表达式并打印其值。
- pp expression:与p命令类似,但使用pprint模块进行美观打印。
- whatis expression:打印表达式的类型。
- source expression:尝试获取给定对象的源代码并显示。
- display [expression]:每次在当前帧中停止执行时显示表达式的值。
- undisplay [expression]:不在当前帧中显示表达式。
- interact:启动一个交互式解释器。
- alias [name [command]]:创建一个名为name的别名,执行command。
- unalias name:删除指定的别名。
- ! statement:在当前堆栈帧的上下文中执行语句。
- run [args ...]:重新启动调试的Python程序。
- restart [args ...]:restart是run的别名。
- q(uit):退出调试器,终止正在执行的程序。
- debug code:进入递归调试器,逐步执行代码参数。
- retval:打印函数最后一次返回的返回值。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何用花生壳三步快速搭建专属网站?
香港服务器如何优化才能显著提升网站加载速度?
如何在Windows服务器上快速搭建网站?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Python并发异常传播_错误处理解析【教程】
如何确认建站备案号应放置的具体位置?
香港服务器租用每月最低只需15元?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
JavaScript Ajax实现异步通信
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
利用python获取某年中每个月的第一天和最后一天
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何使用Blade组件和插槽?(Component代码示例)
javascript中闭包概念与用法深入理解
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何用低价快速搭建高质量网站?
如何在腾讯云服务器快速搭建个人网站?
原生JS实现图片轮播切换效果
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
浅谈redis在项目中的应用
网站优化排名时,需要考虑哪些问题呢?
Laravel如何使用Blade模板引擎?(完整语法和示例)
如何快速配置高效服务器建站软件?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
音乐网站服务器如何优化API响应速度?
魔方云NAT建站如何实现端口转发?
如何快速搭建虚拟主机网站?新手必看指南
微信小程序 wx.uploadFile无法上传解决办法
如何基于云服务器快速搭建个人网站?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
动图在线制作网站有哪些,滑动动图图集怎么做?
PythonWeb开发入门教程_Flask快速构建Web应用
如何制作一个表白网站视频,关于勇敢表白的小标题?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
如何用搬瓦工VPS快速搭建个人网站?
EditPlus中的正则表达式 实战(4)
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
如何在自有机房高效搭建专业网站?
如何在宝塔面板中创建新站点?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何在Windows 2008云服务器安全搭建网站?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何在万网利用已有域名快速建站?
如何在IIS中新建站点并配置端口与IP地址?
如何在万网ECS上快速搭建专属网站?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用


。