python调试器pdb
来源:互联网 发布:李逵打鱼版本源码 编辑:程序博客网 时间:2024/06/06 05:56
C/C++ 语言拥有调试工具gdb,同样对于高级语言Python,也有自己的调试利器pdb。
下面简单结合例子介绍pdb
有如下的python文件:example.py
#!/usr/bin/python#-*- coding:utf-8 -*-import jsondef main(): with open("/root/test/1.json") as f: content = f.read() print "type(content):%s, content:%s" % (type(content), content) print type(json.loads(content)) print json.loads(content)if __name__ == "__main__": a = 1 b = 2 c = 3 d = 4 main() e = 5如果想要进行调试,pdb提供了两种手段:
(1)执行 python -m pdb example.py从代码入口处进入调试
[root@hzclov51 test]# cp file_operate.py example.py[root@hzclov51 test]# python -m pdb example.py > /root/test/example.py(4)<module>()-> import json(Pdb) q(2)在需要调试的代码处添加如下语句设置断点:
import pdb
pdb.set_trace()
然后执行 python example.py 将直接运行代码至断点处
#!/usr/bin/python#-*- coding:utf-8 -*-import jsondef main(): with open("/root/test/1.json") as f: content = f.read() print "type(content):%s, content:%s" % (type(content), content) print type(json.loads(content)) print json.loads(content)if __name__ == "__main__": a = 1 b = 2 import pdb pdb.set_trace() c = 3 d = 4 main() e = 5
[root@hzclov51 test]# python example.py > /root/test/example.py(17)<module>()-> c = 3(Pdb)
一般,第二种方法为推荐用法。
pdb的常用命令和gdb基本相同
help(h)帮助break(b)设置断点(指定行或者函数设置)next(n)往下执行一行(如果是函数不进入函数内部)continue(c)继续执行直到下一个断点处step(s)单步调试(一句句执行,遇到函数进入函数内部执行)return(r)返回函数调用处list(l)列出代码(标识出当前停止的代码处)print(p)打印变量exit(q)退出pdb[root@hzclov51 test]# python example.py > /root/test/example.py(17)<module>()-> c = 3(Pdb) hDocumented commands (type help <topic>):========================================EOF bt cont enable jump pp run unt a c continue exit l q s until alias cl d h list quit step up args clear debug help n r tbreak w b commands disable ignore next restart u whatisbreak condition down j p return unalias where Miscellaneous help topics:==========================exec pdbUndocumented commands:======================retval rv(Pdb) h bb(reak) ([file:]lineno | function) [, condition]With a line number argument, set a break there in the currentfile. With a function name, set a break at first executable lineof that function. Without argument, list all breaks. If a secondargument is present, it is a string specifying an expressionwhich must evaluate to true before the breakpoint is honored.The line number may be prefixed with a filename and a colon,to specify a breakpoint in another file (probably one thathasn't been loaded yet). The file is searched for on sys.path;the .py suffix may be omitted.(Pdb) h ll(ist) [first [,last]]List source code for the current file.Without arguments, list 11 lines around the current lineor continue the previous listing.With one argument, list 11 lines starting at that line.With two arguments, list the given range;if the second argument is less than the first, it is a count.(Pdb) b 3*** Blank or comment(Pdb) b 5Breakpoint 1 at /root/test/example.py:5(Pdb) n> /root/test/example.py(18)<module>()-> d = 4(Pdb) n> /root/test/example.py(19)<module>()-> main()(Pdb) s--Call--> /root/test/example.py(5)main()-> def main():(Pdb) n> /root/test/example.py(6)main()-> with open("/root/test/1.json") as f:(Pdb) n> /root/test/example.py(7)main()-> content = f.read()(Pdb) n> /root/test/example.py(8)main()-> print "type(content):%s, content:%s" % (type(content), content)(Pdb) p content'{"a":"a1","b":{"b1":"b11"}}\n'(Pdb) rtype(content):<type 'str'>, content:{"a":"a1","b":{"b1":"b11"}}<type 'dict'>{u'a': u'a1', u'b': {u'b1': u'b11'}}--Return--> /root/test/example.py(10)main()->None-> print json.loads(content)(Pdb) r> /root/test/example.py(20)<module>()-> e = 5(Pdb) l 15 import pdb 16 pdb.set_trace() 17 c = 3 18 d = 4 19 main() 20 -> e = 5 21 [EOF](Pdb) p a,b,c,d,e*** NameError: NameError("name 'e' is not defined",)(Pdb) p a,b,c,d(1, 2, 3, 4)(Pdb) n--Return--> /root/test/example.py(20)<module>()->None-> e = 5(Pdb) n[root@hzclov51 test]#
0 0
- python pdb 调试器
- python调试器pdb
- python pdb 基础调试
- Python pdb基础调试
- pdb 调试python
- Python 调试 PDB
- 调试python程序---pdb
- Python调试利器PDB
- python pdb调试命令
- pdb调试python代码
- pdb调试python脚本
- pdb调试python脚本
- python断点调试pdb
- python pdb 基础调试
- Python pdb调试
- python -- pdb 调试
- python调试工具pdb
- Python 调试 PDB
- linux中vi编辑器基本操作
- angular 广播实现实时刷新视图
- Activity启动模式intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- 使用Foxmail邮箱客户端的方法。
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- python调试器pdb
- cocos2dx HttpRequest引用计数理解
- 进阶1_MVC到MVP
- NumberUtils、ArrayUtils和RandomUtils工具类用法
- webdynpro for abap 随笔1
- PHP获取两个时间之间的年和月份及间隔天数 PHP两个日期之间的所有日期
- linux文件夹打包命令
- ACM-ICPC---Robot Roll Call – Cambot…Servo…Gypsy…Croooow
- 智能搜索