源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python pdb调试方法分享

  • 时间:2022-03-13 02:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python pdb调试方法分享
[u]复制代码[/u] 代码如下:
import pdb def pdb_test(arg):     for i in range(arg):         print(i)     return arg pdb.run("pdb_test(3)")  
 b 函数名、行号: 打断点,b可以查询所有的断点。
[u]复制代码[/u] 代码如下:
(Pdb) b pdb_test Breakpoint 1 at c:\users\plpcc\desktop\pdbtest.py:3 (Pdb) b Num Type         Disp Enb   Where    breakpoint   keep yes   at c:\users\plpcc\desktop\pdbtest.py:3  
  c: 运行程序,直到遇到断点。
[u]复制代码[/u] 代码如下:
(Pdb) c > c:\users\plpcc\desktop\pdbtest.py(4)pdb_test() -> for i in range(arg):
   l:      查看断点周围的代码
[u]复制代码[/u] 代码如下:
(Pdb) l     import pdb B   def pdb_test(arg):   ->      for i in range(arg):              print(i)        return arg      pdb.run("pdb_test(3)")
 a:     查看参数
[u]复制代码[/u] 代码如下:
(Pdb) a arg = 3  s, n:
    单步运行,区别s会进入路径中的函数,n不会进入  p:     查看表达式的值
[u]复制代码[/u] 代码如下:
(Pdb) p i  condition:  
条件断点,只有条件为true断点才命中
[u]复制代码[/u] 代码如下:
> c:\users\plpcc\desktop\pdbtest.py(5)pdb_test() -> print(i) (Pdb) l     import pdb     def pdb_test(arg):         for i in range(arg): B->          print(i)         return arg     pdb.run("pdb_test(3)") [EOF] (Pdb) b Num Type         Disp Enb   Where breakpoint   keep yes   at c:\users\plpcc\desktop\pdbtest.py:5 (Pdb) condition 2 i==1   //i==1时才触发断点2 New condition set for breakpoint 2. (Pdb) b Num Type         Disp Enb   Where breakpoint   keep yes   at c:\users\plpcc\desktop\pdbtest.py:5  stop only if i==1 (Pdb) c                     //i==0直接打印未断住 > c:\users\plpcc\desktop\pdbtest.py(5)pdb_test() -> print(i)             //触发断点,i==1 (Pdb) p i bt:
查看调用堆栈
[u]复制代码[/u] 代码如下:
(Pdb) bt c:\python33\lib\bdb.py(405)run() -> exec(cmd, globals, locals) <string>(1)<module>() > c:\users\plpcc\desktop\pdbtest.py(5)pdb_test() -> print(i) r:
   执行到函数返回
[u]复制代码[/u] 代码如下:
(Pdb) r --Return-- > c:\users\plpcc\desktop\pdbtest.py(6)pdb_test()->3 //代码位置、函数返回值->3 -> return arg                                       //代码位置的语句 (Pdb) l     import pdb     def pdb_test(arg):         for i in range(arg):             print(i)  ->      return arg     pdb.run("pdb_test(3)")
通过pdb.set_trace() 在代码中指定位置嵌入一个断点,通常可以通过调试开关来控制
[u]复制代码[/u] 代码如下:
import pdb __DEBUG__ = True def pdb_test(arg):  if True == __DEBUG__:      pdb.set_trace()  for i in range(arg):      print(i)  return arg pdb_test(3)
运行后在pdb.set_trace()位置被断住,当__DEBUG__ = False,代码正常运行
[u]复制代码[/u] 代码如下:
> c:\users\plpcc\desktop\pdbtest.py(8)pdb_test() -> for i in range(arg): (Pdb) l     __DEBUG__ = True     def pdb_test(arg):         if True == __DEBUG__:             pdb.set_trace()  ->      for i in range(arg):             print(i)        return arg    pdb_test(3) [EOF]
通过pdb.pm()进行事后调试,可以跟踪异常程序最后的堆载信息:
[u]复制代码[/u] 代码如下:
Traceback (most recent call last): File "C:\Users\plpcc\Desktop\pdbTest.py", line 13, in <module>  pdb_test(3) File "C:\Users\plpcc\Desktop\pdbTest.py", line 10, in pdb_test  1/0 ZeroDivisionError: division by zero >>> import pdb >>> pdb.pm() > c:\users\plpcc\desktop\pdbtest.py(10)pdb_test() -> 1/0 (Pdb) l     def pdb_test(arg):         if True == __DEBUG__:             pdb.set_trace()         for i in range(arg):             print(i) ->          1/0        return arg    pdb_test(3)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部