zoukankan      html  css  js  c++  java
  • python调试方法

    之前调试python程序都是用print参数,感觉有点弱爆啊,最近发现python也有类似C语言gdb的工具pdb,记录下pdb的使用方法和心得。

      先找了段简单的测试程序:
    复制代码

    !/usr/bin/python

    from ftplib import FTP
    import sys
    import socket
    import pdb
    def passwordCorrect(ip,port,username,password):
    try:
    client = FTP()
    pdb.set_trace()
    client.connect(ip,port)
    client.login(username,password)
    client.close()
    except Exception, e:
    pdb.set_trace()
    client.close()
    if str(e).find('unknown IP address')!=-1:
    return 2
    return 0
    print "correct"
    return 1

    if name == 'main':
    socket.setdefaulttimeout(3)
    ret = passwordCorrect('127.0.0.1',21,'test','test')
    print "return is ",ret

    复制代码

      pdb的常用命令说明:

      l #查看运行到哪行代码
      n #单步运行,跳过函数
      s #单步运行,可进入函数
      p 变量 #查看变量值
      b 行号 #断点设置到第几行
      b #显示所有断点列表
      cl 断点号 #删除某个断点
      cl #删除所有断点
      c #跳到下一个断点
      r #return当前函数
      exit #退出

      调试记录:

      pdb设置断点可以在程序里加入:

      import pdb

      在需要设置断点的地方加入pdb.set_trace()

      执行python -m pdb test.py

    [root@wh practice]# vim test.py
    [root@wh practice]# python -m pdb test.py

    /home/practice/test.py(2)()
    -> from ftplib import FTP
    (Pdb) c
    /home/practice/test.py(10)passwordCorrect()
    -> client.connect(ip,port)

    复制代码

    按c逐个执行到下一个断点,按p ip 就可以查看变量ip的值

    exit退出当前函数

  • 相关阅读:
    ScottGu: 宣布微软 AJAX CDN
    表格数据流协议TDS
    .NET 4 System.Threading.Barrier 类
    企业架构思考
    OpenSSL的托管项目
    WCF服务中操作FormsAuthentication的Cookie
    Silverlight相关博客收集20090927
    Sync Framework 2.0
    [中央电视台·见证]大学堂——兰州大学
    系统进程管理工具Process Explorer
  • 原文地址:https://www.cnblogs.com/skyus/p/7210234.html
Copyright © 2011-2022 走看看