之前調試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
1 [root@wh practice]# vim test.py 2 [root@wh practice]# python -m pdb test.py 3 > /home/practice/test.py(2)<module>() 4 -> from ftplib import FTP 5 (Pdb) c 6 > /home/practice/test.py(10)passwordCorrect() 7 -> client.connect(ip,port)
按c逐個執行到下一個斷點,按p ip 就可以查看變量ip的值
exit退出當前函數
主要用到的功能就是這些,暫且先學這些