代码改变世界

[python] - pdb调试

2016-01-18 16:45  sophia194910  阅读(182)  评论(0编辑  收藏  举报

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:\users\administrator\workspace\practice\src\practice_test\dailytest.py:4
(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at c:\users\administrator\workspace\practice\src\practice_test\dailytest.py:4
(Pdb) c
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.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:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()
-> print (i)
(Pdb) p i
0
(Pdb) n
0
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()
-> print (i)
(Pdb) p i
1
(Pdb) n
1
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()
-> print (i)
(Pdb) p i
2
(Pdb) n
2
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(7)pdb_test()
-> return arg
(Pdb) p arg
3
(Pdb) a
arg = 3
(Pdb) n
--Return--
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(7)pdb_test()->3
-> return arg
(Pdb) exit

3. 调试命令详解

b设置断点:

(Pdb) b pdb_test
Breakpoint 1 at c:\users\administrator\workspace\practice\src\practice_test\dailytest.py:4

b查看断点:

(Pdb) b
Num Type         Disp Enb   Where
1   breakpoint   keep yes   at c:\users\administrator\workspace\practice\src\practice_test\dailytest.py:4

c运行程序,直到遇到断点:

(Pdb) c
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.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:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()

p查看表达式的值:

-> print (i)
(Pdb) p i
0
(Pdb) n
0
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()
-> print (i)
(Pdb) p i
1
(Pdb) n
1
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(6)pdb_test()
-> print (i)
(Pdb) p i
2
(Pdb) n
2
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.py(5)pdb_test()
-> for i in range(arg):
(Pdb) n
> c:\users\administrator\workspace\practice\src\practice_test\dailytest.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 

http://blog.csdn.net/carolzhang8406/article/details/6923997