简单调试 Python 程序

在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块(假设要调试的程序名为 d.py):

$ vi d.py
#!/usr/bin/python

def main():
        i, sum = 1, 0
        for i in xrange(100):
                sum = sum + i
        print sum

if __name__ == '__main__':
        main()

$ python -m pdb d.py

运行上面的命令后进入以下界面,可以输入类似 gdb 的命令来改变程序的执行流程:

$ python -m pdb d.py 
> d.py(3)()
-> def main():
(Pdb) 

list 显示程序的最近代码段:

(Pdb) list
  1  	#!/usr/bin/python
  2  	
  3  ->	def main():
  4  		i, sum = 1, 0
  5  		for i in xrange(100):
  6  			sum = sum + i
  7  		print sum
  8  	 
  9  	if __name__ == '__main__':
 10  		main()
[EOF]

next 或者 n 执行下一行代码:

(Pdb) next
> d.py(9)()
-> if __name__ == '__main__':

用 break 在第6行设置一个断点:

(Pdb) break d.py:6
Breakpoint 1 at d.py:6

(Pdb) list
  1  	#!/usr/bin/python
  2  	
  3  	def main():
  4  		i, sum = 1, 0
  5  ->		for i in xrange(100):
  6 B			sum = sum + i
  7  		print sum
  8  	 
  9  	if __name__ == '__main__':
 10  		main()
[EOF]

如果想在函数处设置断点:

(Pdb) break d.main
d.py:3

(Pdb) list
  1  	#!/usr/bin/python
  2  	
  3 B	def main():
  4  ->		i, sum = 1, 0
  5  		for i in xrange(100):
  6  			sum = sum + i
  7  		print sum
  8  	 
  9  	if __name__ == '__main__':
 10  		main()
[EOF]

还可以给断点加条件,比如设置条件只有当 sum > 50 的时候才 break:

(Pdb) break d.py:6, sum > 50
Breakpoint 1 at d.py:6

如果想查看某个变量的值,可以用 pp 命令打印出来:

(Pdb) step
> d.py(5)main()
-> for i in xrange(100):
(Pdb) pp sum
0

可以直接在程序里使用 pdb 模块,import pdb 后 pdb.set_trace():

#!/usr/bin/python
import pdb

def main():
        i, sum = 1, 0
        for i in xrange(100):
                sum = sum + i
        pdb.set_trace()
        print sum

if __name__ == '__main__':
        main()

这样只要运行程序 ./d.py 就可以直接运行到 print sum 处:

$ ./d.py 
> d.py(9)main()
-> print sum
(Pdb) 

总结

命令 用途
break 或 b 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助


From:http://www.vpsee.com/2009/09/debug-python-programwith-pdb/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,有几种常见的调试方法可以帮助你找到和修复程序中的错误。下面是一些常用的Python程序调试技巧: 1. 使用print语句:在代码中插入print语句,输出一些关键变量的值,以便理解程序执行过程中的状态。这是最简单和常用的调试方法之一。 2. 使用assert语句:assert语句用于检查某个条件是否为真,如果条件为假,则会抛出AssertionError异常。通过在关键位置添加assert语句,可以验证程序的假设条件,并在条件不满足时中断程序执行。 3. 使用pdb模块:pdb是Python的内置调试器,可以让你逐行执行代码,并在任意位置设置断点。你可以使用`import pdb`导入pdb模块,并在需要调试的位置插入`pdb.set_trace()`来启动调试器。 4. 使用IDE的调试功能:许多集成开发环境(IDE)都提供了强大的调试功能,例如PyCharm、Visual Studio Code等。这些工具可以让你逐步执行代码、查看变量的值、设置断点等。 5. 使用日志记录:通过使用Python的logging模块,你可以在程序中插入日志记录语句,将关键信息输出到日志文件中。这样可以帮助你追踪程序的执行过程,并查找错误。 6. 使用try-except语句:使用try-except语句捕获异常,可以在程序出现异常时,打印出异常信息并进行处理。这样可以更好地了解程序中的问题所在。 以上是一些常见的Python程序调试方法。根据实际情况选择合适的调试方法,以帮助你找到和解决程序中的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值