1. 代码如下:
# coding=gbk import pdb def pdb_test(arg): for i in range(arg): print (i) return arg pdb.run("pdb_test(3)")
2. 调试过程
> <string>(1)<module>() (Pdb) b pdb_test Breakpoint 1 at c:usersadministratorworkspacepracticesrcpractice_testdailytest.py:4 (Pdb) b Num Type Disp Enb Where 1 breakpoint keep yes at c:usersadministratorworkspacepracticesrcpractice_testdailytest.py:4 (Pdb) c > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) l 1 # coding=gbk 2 import pdb 3 4 B def pdb_test(arg): 5 -> for i in range(arg): 6 print (i) 7 return arg 8 9 pdb.run("pdb_test(3)") 10 11 (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test() -> print (i) (Pdb) p i 0 (Pdb) n 0 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test() -> print (i) (Pdb) p i 1 (Pdb) n 1 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test() -> print (i) (Pdb) p i 2 (Pdb) n 2 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(7)pdb_test() -> return arg (Pdb) p arg 3 (Pdb) a arg = 3 (Pdb) n --Return-- > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(7)pdb_test()->3 -> return arg (Pdb) exit
3. 调试命令详解
b设置断点:
(Pdb) b pdb_test
Breakpoint 1 at c:usersadministratorworkspacepracticesrcpractice_testdailytest.py:4
b查看断点:
(Pdb) b
Num Type Disp Enb Where
1 breakpoint keep yes at c:usersadministratorworkspacepracticesrcpractice_testdailytest.py:4
c运行程序,直到遇到断点:
(Pdb) c > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg):
l查看断点周围的代码:
(Pdb) l 1 # coding=gbk 2 import pdb 3 4 B def pdb_test(arg): 5 -> for i in range(arg): 6 print (i) 7 return arg 8 9 pdb.run("pdb_test(3)") 10 11
s, n单步运行,区别是s会进入路径中的函数,n不会进入:
(Pdb) n
> c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test()
p查看表达式的值:
-> print (i) (Pdb) p i 0 (Pdb) n 0 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test() -> print (i) (Pdb) p i 1 (Pdb) n 1 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(6)pdb_test() -> print (i) (Pdb) p i 2 (Pdb) n 2 > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(5)pdb_test() -> for i in range(arg): (Pdb) n > c:usersadministratorworkspacepracticesrcpractice_testdailytest.py(7)pdb_test() -> return arg (Pdb) p arg 3
a查看参数:
(Pdb) a
arg = 3
终止并退出:
(Pdb) exit
参考:
http://www.cnblogs.com/chencheng/archive/2013/07/07/3161778.html