使用pdb命令行调试python代码

2016-11-25  本文已影响0人  Cindy小隐

有时候不得已使用命令行调试,下面介绍运用python的pdb模块进行命令行调试的基本方法。

进入调试

有两种方法进入调试:

  1. 在xxx.py中载入pdb模块,并在需要的地方设置好断点,然后在命令行执行 python xxx.py就可以进入调试
import pdb
pdb.set_trace()  # 设置断点,在断点代码的上一行写入这行代码
  1. 在命令行使用参数进入调试 python -m pdb xxx.py,这样会自动停在第一行。

设置断点

# 设置当前脚本断点
(Pdb)b 10 # 断点设置在当前py的第10行
# 设置指定脚本断点
(Pdb)b xxx.py:20 #断点设置到 xxx.py第20行
# 删除断点
(Pdb)cl 1 #删除第1个断点
(Pdb)cl  # 删除所有断点

运行

(Pdb)n  # 单步运行,相当于IDE中的step over
(Pdb)s  # 深入方法内部运行,相当于IDE中的step into
(Pdb)u  # 跳出方法,相当于IDE中的step out
(Pdb)c  # 跳到下一个断点

查看当前代码位置

(Pdb) l
 65     newModelFile =outFile.replace("output.txt","model_corpus.pkl")
 66     infoFile = newModelFile.replace("model_corpus.pkl","info.pkl")
 67     topicsFile = newModelFile.replace("model_corpus.pkl","topics.pkl")
 68     vocabInfo, idList = GetDataFromDisk.get_vocab(vocabFile)
 69     pdb.set_trace()
 70  -> Data = GetDataFromDisk.get_data(testFile,vocabInfo,UnuseData)
 71     modelDict,InfoDict,topicsDict = GetDataFromDisk.get_Model(modelFile,outFile)
 72     if Data == 1:
 73         fw=open(outFile,"w")
 74         fw.close()
 75         print -1

第一次执行l命令,会打印出当前代码的上下各5行代码,此后每次执行l命令,都会连续往下打印10行代码,直到.py结尾。

打印变量

(Pdb)p param
# 如果变量是个复杂的对象,可以先打印查看变量的属性,然后查看变量的某个属性值
(Pdb)p dir(param)
(Pdb)p param.xxx

结束调试

(Pdb)q
上一篇 下一篇

猜你喜欢

热点阅读