Chinaunix首页 | 论坛 | 博客
  • 博客访问: 499358
  • 博文数量: 176
  • 博客积分: 4045
  • 博客等级: 上校
  • 技术积分: 2491
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-19 11:23
文章分类

全部博文(176)

文章存档

2011年(7)

2009年(12)

2008年(157)

我的朋友

分类:

2009-02-07 19:44:46

Python 调试器 Pdb

===========================

使用pdb调试器的最简单形式:

>>>import pdb

>>>pdb.run('')

调试环境下的提示符(prompt)'(Pdb)'.中第一次调用函数的时候,调试器将会停下进入调试状态。另一种情况,如果一个语句结束时候有一个为处理的异常,可以使用pdbpost-mortem工具来查看一些环境变量等等(?)。

>>>

>>>import pdb

>>>pdb.pm()

可以被识别的命令将在下一章列出。大部分这样的命令可以首字母缩略的形式使用,比如h(elp)就是help,可以使用h来代替。一个空行表示重复上一次键入的命令(除去list命令)。调试器无法识别的语句被认为是python语句并且在被调试的程序上下文中得到执行。

Python语句也可以以!作为前缀来进行表示和执行。这是一种非常有力的方式来窥探被调试程序的内部,甚至可以通过这种方式来改变变量的值。

当一个异常在语句中raise中的时候,异常的名字被打印出来但是条时期的状态并不会随之改变。

条时期也提供别名机制,并且可以有自己的参数,别名可以减少输入的负担。

多行命令可以通过一行来进行输入,只需要使用‘;;’进行分割即使是在一个括中的字符串中(也就是说字符串中如果有;;的话要十分小心!)。

如果 '.pdbrc' 文件在你的Home目录下或者当前目录下,Pdb将会读取他的内容并且在调试器提示符环境下执行他。对于别名机制这是非常有用的。如果当前目录和home目录下都有配置文件,则先读取home下的文件,再读取当前目录下的配置文件进行覆盖。

除了别名,调试器并不支持直接的标称,但是可以简单的继承该类而写出自己的调试器,提供你自己希望的特性。

附一些有用的调试命令

w(here) 显式当前堆栈结构。往下的是新的,就像X86构架中的那样。

d(own) 移向新的一帧

u(p) 移向旧的一帧

b(reak) [([filename:]lineno | function) [, condition] ]

如果没有指定文件名则使用当前文件

condition是一个字符串,必须等价于 true

The condition argument, if present, is a string which must

evaluate to true in order for the breakpoint to be honored.

tbreak [([filename:]lineno | function) [, condition] ]

临时的breakpoint

cl(ear) [bpnumber [bpnumber ...]]

空格进行分割,清除这些断点

disable bpnumber [bpnumber ...]

disable 断点,可以enable之后

ignore bpnumber count

设置某个断点的count,当count0的时候断点状态为activecount不为0的时候每一次进入断点时候count自减

condition bpnumber condition


s(tep) 单步执行,步入

n(ext) 单步执行,步过函数

c(ont(inue)) 执行直到断点

l(ist) [first [,last]]

列出11行附近的代码

a(rgs)

打印出当前函数的参数

p expression

答应表达式的值

(!) statement

执行statement

whatis arg

答应 arg 的类型

q(uit)

阅读(1986) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~