您的位置:首页 > 编程语言 > Python开发

python在Ubuntu系统下的调试工具pdb

2017-05-06 22:27 435 查看

使用 pdb 进行调试

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令

参考链接

简而言之就两步:

- 1.import pdb

- 2.设置断点 pdb.set_trace()

命令 : 解释

break 或 b : 设置断点 设置断点

continue 或 c : 继续执行程序

list 或 l : 查看当前行的代码段

step 或 s : 进入函数

return 或 r : 执行代码直到从当前函数返回

exit 或 q : 中止并退出

next 或 n : 执行下一行

p : 打印变量的值

help : 帮助

示例

import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print final


使用python -m pdb mysqcript.py

这样的方式,(Pdb) 会自动停在第一行,等待调试;这时你可以看看帮助 (Pdb) h(elp)

说明下这几个关键 命令

断点设置

(Pdb)b 10 #断点设置在本py的第10行

或(Pdb)b ots.py:20 #断点设置到 ots.py第20行

删除断点(Pdb)b #查看断点编号

(Pdb)cl 2 #删除第2个断点

运行

(Pdb)n #单步运行
(Pdb)s #细点运行 也就是会下到,方法
(Pdb)c #跳到下个断点


查看

(Pdb)p param #查看当前 变量值
(Pdb)l #查看运行到某处代码
(Pdb)a #查看全部栈内变量
(Pdb)w 列出目前call stack 中的所在层。
(Pdb)d 在call stack中往下移一层
(Pdb)u 在call stack中往上移一层。如果在上移一层之后按下 n ,则会在上移之后的一层执行下一个叙述,之前的 function call 就自动返回。
(Pdb)cl 清除指定的断点。如果没有带参数,则清除所有断点。
(Pdb)disable 取消所有断点的功能,但仍然保留这些断点。
(Pdb)enable 恢复断点的功能。
(Pdb)ignore 设定断点的忽略次数。如果没指定 count,其初始 为 0。当 count 为 0 时,断点会正常动作。若有指定 count,则每次执行到该中断, count 就少 1,直到 count 数为 0。
(Pdb)condition bpnumber [condition]
(Pdb)j(ump) lineNo. 跳到某行执行。只有在 call stack 的最底部才能作用。
(Pdb)l  列出目前所在档案中的位置。连续地 l 命令会一直列到档案结尾,可以使用指定行数或范围来打印。
(Pdb)pp 和 p 命令类似,但是使用 pprint module(没用过 pprint,详情请参考 Python Library Reference)。
(Pdb)alias 以一个"别名"代替"一群除错命令",有点类似 c/c 的 macro(详情请参考 Python Library Reference)。
(Pdb)unalias 取消某个 alias。
(Pdb)[!]statement 在目前的环境(context)中执行叙述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu