手机
当前位置:查字典教程网 >脚本专栏 >python >python pdb调试方法分享
python pdb调试方法分享
摘要:复制代码代码如下:importpdbdefpdb_test(arg):foriinrange(arg):print(i)returnargp...

复制代码 代码如下:

import pdb

def pdb_test(arg):

for i in range(arg):

print(i)

return arg

pdb.run("pdb_test(3)")

b 函数名、行号:

打断点,b可以查询所有的断点。

复制代码 代码如下:

(Pdb) b pdb_test

Breakpoint 1 at c:usersplpccdesktoppdbtest.py:3

(Pdb) b

Num Type Disp Enb Where

breakpoint keep yes at c:usersplpccdesktoppdbtest.py:3

c:

运行程序,直到遇到断点。

复制代码 代码如下:

(Pdb) c

> c:usersplpccdesktoppdbtest.py(4)pdb_test()

-> for i in range(arg):

l:

查看断点周围的代码

复制代码 代码如下:

(Pdb) l

import pdb

B def pdb_test(arg):

-> for i in range(arg):

print(i)

return arg

pdb.run("pdb_test(3)")

a:

查看参数

复制代码 代码如下:

(Pdb) a

arg = 3

s, n:

单步运行,区别s会进入路径中的函数,n不会进入

p:

查看表达式的值

复制代码 代码如下:

(Pdb) p i

condition:

条件断点,只有条件为true断点才命中

复制代码 代码如下:

> c:usersplpccdesktoppdbtest.py(5)pdb_test()

-> print(i)

(Pdb) l

import pdb

def pdb_test(arg):

for i in range(arg):

B-> print(i)

return arg

pdb.run("pdb_test(3)")

[EOF]

(Pdb) b

Num Type Disp Enb Where

breakpoint keep yes at c:usersplpccdesktoppdbtest.py:5

(Pdb) condition 2 i==1 //i==1时才触发断点2

New condition set for breakpoint 2.

(Pdb) b

Num Type Disp Enb Where

breakpoint keep yes at c:usersplpccdesktoppdbtest.py:5

stop only if i==1

(Pdb) c

//i==0直接打印未断住

> c:usersplpccdesktoppdbtest.py(5)pdb_test()

-> print(i) //触发断点,i==1

(Pdb) p i

bt:

查看调用堆栈

复制代码 代码如下:

(Pdb) bt

c:python33libbdb.py(405)run()

-> exec(cmd, globals, locals)

<string>(1)<module>()

> c:usersplpccdesktoppdbtest.py(5)pdb_test()

-> print(i)

r:

执行到函数返回

复制代码 代码如下:

(Pdb) r

--Return--

> c:usersplpccdesktoppdbtest.py(6)pdb_test()->3 //代码位置、函数返回值->3

-> return arg //代码位置的语句

(Pdb) l

import pdb

def pdb_test(arg):

for i in range(arg):

print(i)

-> return arg

pdb.run("pdb_test(3)")

通过pdb.set_trace() 在代码中指定位置嵌入一个断点,通常可以通过调试开关来控制

复制代码 代码如下:

import pdb

__DEBUG__ = True

def pdb_test(arg):

if True == __DEBUG__:

pdb.set_trace()

for i in range(arg):

print(i)

return arg

pdb_test(3)

运行后在pdb.set_trace()位置被断住,当__DEBUG__ = False,代码正常运行

复制代码 代码如下:

> c:usersplpccdesktoppdbtest.py(8)pdb_test()

-> for i in range(arg):

(Pdb) l

__DEBUG__ = True

def pdb_test(arg):

if True == __DEBUG__:

pdb.set_trace()

-> for i in range(arg):

print(i)

return arg

pdb_test(3)

[EOF]

通过pdb.pm()进行事后调试,可以跟踪异常程序最后的堆载信息:

复制代码 代码如下:

Traceback (most recent call last):

File "C:UsersplpccDesktoppdbTest.py", line 13, in <module>

pdb_test(3)

File "C:UsersplpccDesktoppdbTest.py", line 10, in pdb_test

1/0

ZeroDivisionError: division by zero

>>> import pdb

>>> pdb.pm()

> c:usersplpccdesktoppdbtest.py(10)pdb_test()

-> 1/0

(Pdb) l

def pdb_test(arg):

if True == __DEBUG__:

pdb.set_trace()

for i in range(arg):

print(i)

-> 1/0

return arg

pdb_test(3)

【python pdb调试方法分享】相关文章:

python调用cmd复制文件代码分享

python实现人人网登录示例分享

python实现2014火车票查询代码分享

Python httplib,smtplib使用方法

python zip文件 压缩

python获取豆瓣电影简介代码分享

python读文件逐行处理的示例代码分享

python 数据加密代码

Python转码问题的解决方法

python赋值操作方法分享

精品推荐
分类导航