当前位置: 首页 > article >正文

python pdb调试工具详解

python 模块 pdb调试工具

文章目录

  • python 模块 pdb调试工具
    • 1. pdb介绍
      • 1.1 PDB调试命令汇总
    • 2. 实战
      • 2.1 第一种调试
      • 2.2 第二种调试


1. pdb介绍

pdb是ptyhon内置的一个调试库,是调试python代码的好帮手,本文是对其用法的详细介绍。

1.1 PDB调试命令汇总

高级命令
以上的示例只是展示了最简单的顺序结构的代码的调试方法,而实际应用中遇到的大多数代码都有着较为复杂的逻辑结构,比如循环结构、分支结构、调用函数、调用其他模块的函数、使用类和对象等等。
针对这些场景还有很多更高级的调试命令,其实掌握了前面的几个简单的命令的用法后,下面的这些更高级的命令就都很容易上手了,多用几遍就能很快掌握了。
命令 命令全称 功能

h help 查看帮助
n next 执行下一条语句
s step 执行下一条语句,如果是函数,则会执行到函数的第一句
b break 列出当前的所有断点
b <行号> / 在某一行打一个断点
b <文件名>:<行号> / 在某个文件的某行打一个断点
b <函数名> / 在某个函数的第一行打一个断点
cl clear 清除所有断点
cl n1 n2 ... / 清除编号为n1、n2...的断点
cl <行号> / 清除某行的断点
cl <文件名>:<行号> / 清除某个文件某行的断点
r return 执行当前函数到结束
c continue 执行到下一个断点
l list 列出源码(前后11行代码)
l <行号> / 列出某行周围11行代码
l <行号1> <行号2> / 列出两个行号范围内的代码
p <变量名> print <变量名> 输出变量的值
pp <变量名> / 好看一点的输出
q quit 退出debug
unt until 退出循环或当期堆栈
run / 重新启动debug
a args 列出当前执行的函数的参数
w where 打印当前执行堆栈
注:平时使用的时候通常用的都是各个命令的简写形式,当然用全称也是可以的(如果不嫌麻烦的话)。

补充
在命令行中进入调试模式的方法:python -m pdb demo.py
在调试模式中按一下Enter键表示执行一下上一条命令。
在ipython中使用PDB(体验更好):%run -d demo.py

2. 实战

2.1 第一种调试

$ cat test.py:
# coding:utf-8
import pdb
s1 = 'aaa'
pdb.set_trace()
s2 = 'bbb'
s3 = 'ccc'
pdb.set_trace()
s = s1 + s2 + s3
print s

pdb.set_trace()函数在第4、7行分别打了一个断点

  • l:命令打印出当前的代码段
  • p <变量名>:命令打印已经出现过的变量的值
  • n:进行下一步
  • q:退出调试
$ python test1.py
> /root/python/pdb/test.py(5)<module>()
-> s2 = 'bbb'
(Pdb) l1  	# coding:utf-82  	import pdb3  	s1 = 'aaa'4  	pdb.set_trace()5  ->	s2 = 'bbb'6  	s3 = 'ccc'7  	pdb.set_trace()8  	s = s1 + s2 + s39  	print s
[EOF](Pdb) n
> /root/python/pdb/test.py(6)<module>()
-> s3 = 'ccc'
(Pdb) p s1
'aaa'
(Pdb) p s2
'bbb'
(Pdb) p s3
*** NameError: NameError("name 's3' is not defined",)
(Pdb) n
> /root/python/pdb/test.py(7)<module>()
-> pdb.set_trace()
(Pdb) p s3
'ccc'
(Pdb) n
> /root/python/pdb/test.py(8)<module>()
-> s = s1 + s2 + s3
(Pdb) p s
*** NameError: NameError("name 's' is not defined",)
(Pdb) n
> /root/python/pdb/test.py(9)<module>()
-> print s
(Pdb) p s
'aaabbbccc'
(Pdb) q
Traceback (most recent call last):File "test.py", line 9, in <module>print sFile "test.py", line 9, in <module>print sFile "/usr/lib64/python2.7/bdb.py", line 49, in trace_dispatchreturn self.dispatch_line(frame)File "/usr/lib64/python2.7/bdb.py", line 68, in dispatch_lineif self.quitting: raise BdbQuit
bdb.BdbQuit

2.2 第二种调试

  • b <行号>:命令在某一行打一个断点
  • b:查看当前打了哪些断点
$ cat test2.py
# coding:utf-8
s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'
s = s1 + s2 + s3
print s

开始调试:

$ python -m pdb test2.py 
> /root/python/pdb/test2.py(2)<module>()
-> s1 = 'aaa'
(Pdb) l1  	# coding:utf-82  ->	s1 = 'aaa'3  	s2 = 'bbb'4  	s3 = 'ccc'5  	s = s1 + s2 + s36  	print s
[EOF]
(Pdb) n
> /root/python/pdb/test2.py(3)<module>()
-> s2 = 'bbb'
(Pdb) p s1
'aaa'
(Pdb) b 5
Breakpoint 1 at /root/python/pdb/test2.py:5
(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at /root/python/pdb/test2.py:5
(Pdb) n
> /root/python/pdb/test2.py(4)<module>()
-> s3 = 'ccc'
(Pdb) n
> /root/python/pdb/test2.py(5)<module>()
-> s = s1 + s2 + s3
(Pdb) l1  	# coding:utf-82  	s1 = 'aaa'3  	s2 = 'bbb'4  	s3 = 'ccc'5 B->	s = s1 + s2 + s36  	print s
[EOF]
(Pdb) n
> /root/python/pdb/test2.py(6)<module>()
-> print s
(Pdb) n
aaabbbccc
--Return--

参考:

  • pdb — Python 的调试器
  • Python Debugging With Pdb
  • Getting Started With pdb
http://www.lryc.cn/news/2415558.html

相关文章:

  • ZigBee介绍
  • 坚果nuts 加速 官网_坚果R2手机发布 Smartisan OS 8.0公布推送计划
  • 计算机毕业设计django+vue基于技术的招聘网站系统设计与开发【开题+论文+程序】
  • 《计算机工程》2023投稿记录
  • python爬取网站m3u8视频,将ts解密成mp4,合并成整体视频
  • 支付宝SDK出现 'openssl/rsa.h' file not found
  • WPF 基础控件之托盘
  • 合成大西瓜小程序小游戏源码,仅供学习
  • 关于cvSnakeImage函数的问题
  • EDKII vUDK 2018 在linux下安装
  • 神奇输入法Fleksy免费开放Fleksy SDK,已集成多款应用
  • 服务器入门使用
  • Linux应用程序管理(rpm yum 源码安装)
  • 中医院信息管理系统(源码+开题报告)
  • Winform中用bindingNavigator和bingdingSource实现分页
  • Android内部存储与外置SDCard
  • 一份关于windows server服务器的安全漏洞处理建议(来自绿盟安全评估)_允许traceroute探测漏洞
  • 数据结构——家谱管理系统
  • java天美美容院管理系统(开题+源码)
  • 网页常用外链网址总结
  • 一个月收益高达16.5K,来看我是如何通过Python技术手段变现,逐步迈向财富自由的!
  • 【教程】迅为iTOP-4412精英版exynos4412开发板搭建原生Linux最小系统(二)
  • 如何更新 Symantec AntiVirus 企业版的病毒定义
  • 信号处理国际会议排名
  • CE修改器第一关之下载安装使用教程
  • 服务器好玩的项目_【警示分析】秘乐、赞丽、AOT、车秘等等,你正在玩和最关心的项目,降魔一一给你分析现状!必看!!!...
  • 从BOSCore公投WPS提案,探讨区块链社区治理新思路
  • Ubuntu安装搜狗拼音输入法-sogoupinyin
  • Android SystemServer进程启动流程
  • 周围剃光头顶留长发型_你说她们在“装嫩”?不好意思,这些发型你试了就会真香...