zoukankan      html  css  js  c++  java
  • 15 调试

    1. pdb

    pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++)。

    def getAverage(a,b):
        result = a+b
        print("result is %s"%result)
        return result
    
    a = 10
    b = 20
    c = a+b
    ret = getAverage(a,b)
    print(ret)

    2.执行时调试

    程序启动,停止在第一行等待单步调试。

    python -m pdb some.py

         

    (Pdb) l          #list显示当前的代码
      1  ->    def getAverage(a,b):
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6      a = 10
      7      b = 20
      8      c = a+b
      9      ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    (Pdb) n              #next 向下执行1行代码
    > /home/python/python06/01-调试.py(6)<module>()
    -> a = 10
    (Pdb) l
      1      def getAverage(a,b):
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6  ->    a = 10
      7      b = 20
      8      c = a+b
      9      ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    (Pdb) c           #继续执行代码
    result is 30
    30
    The program finished and will be restarted
    > /home/python/python06/01-调试.py(1)<module>()
    -> def getAverage(a,b):
    (Pdb) l
      1  ->    def getAverage(a,b):
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6      a = 10
      7      b = 20
      8      c = a+b
      9      ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    (Pdb) n
    > /home/python/python06/01-调试.py(6)<module>()
    -> a = 10
    (Pdb) l
      1      def getAverage(a,b):
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6  ->    a = 10
      7      b = 20
      8      c = a+b
      9      ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    
    (Pdb) b 9             #第9行添加断点
    Breakpoint 1 at /home/python/python06/01-调试.py:9
    
    (Pdb) n
    > /home/python/python06/01-调试.py(7)<module>()
    -> b = 20
    (Pdb) l
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6      a = 10
      7  ->    b = 20
      8      c = a+b
      9 B    ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    (Pdb) c             
    > /home/python/python06/01-调试.py(9)<module>()
    -> ret = getAverage(a,b)
    (Pdb) l
      4          return result
      5      
      6      a = 10
      7      b = 20
      8      c = a+b
      9 B->    ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    
    (Pdb) p a
    10
    (Pdb) s
    --Call--
    > /home/python/python06/01-调试.py(1)getAverage()
    -> def getAverage(a,b):
    (Pdb) l
      1  ->    def getAverage(a,b):
      2          result = a+b
      3          print("result is %s"%result)
      4          return result
      5      
      6      a = 10
      7      b = 20
      8      c = a+b
      9 B    ret = getAverage(a,b)
     10      print(ret)
    [EOF]
    (Pdb) a
    a = 10
    b = 20
    (Pdb) q      #退出调试

    3.交互调试

    进入python或ipython解释器

    import pdb
    pdb.run('testfun(args)') #此时会打开pdb调试,注意:先使用s跳转到这个testfun函数中,然后就可以使用l看到代码了

    4.程序里埋点

    当程序执行到pdb.set_trace() 位置时停下来调试

    代码上下文
    ...
    
    import pdb 
    pdb.set_trace() 
    
    ...

     

    5.日志调试

       大公司只能用日志调试

    6.集成开发环境IDE

  • 相关阅读:
    APIO2020 粉刷墙壁
    上传文件超过1MB时,前端直接返回500,没有进入到上传方法
    mybatis xml 文件中 判断条件为时间,则不能做空字符串判断,否则会报错
    springcloud 多模块自动化部署 (Cloud Toolkit)
    @RequestBody Content type 'multipart/form-data;boundary=----WebKitFormBoundarybEyHr0FZTTOHW7Vq;charset=UTF-8' not supported
    读取视频时长
    zuul中使用Configuration注解后,过滤器无响应
    IDEA 2020.1 无法点击表名链接到数据源
    IDEA 常用插件
    转账到支付宝账户
  • 原文地址:https://www.cnblogs.com/venicid/p/7944662.html
Copyright © 2011-2022 走看看