调试仅在命令行中运行的python程序

时间:2017-08-25 08:03:54

标签: python debugging

有问题的节目是Pydial。我使用此命令在pycharm中运行它。

  

python pydial.py chat config / Tut-hdc-CamInfo.cfg

我只能在终端上运行它。我正在尝试调试程序,但只是没有运行程序。

如何在运行程序时调试程序?我希望看到程序运行时正在执行的类和方法的顺序,而不是当前的情况,我可以看到正在执行的类和方法的顺序,但程序没有运行(我无法提供任何输入该计划)。

1 个答案:

答案 0 :(得分:0)

要在脚本开头调试,请添加-m pdb。进入调试器后,键入n执行下一行,s进入函数,或exit停止调试。键入?以查看所有pdb选项。

python -m pdb pydial.py chat config/Tut-hdc-CamInfo.cfg
> /home/jdb-work/repos/pydial/pydial.py(25)<module>()
-> import os
(Pdb) list
 20      # See the License for the specific language governing permissions and
 21      # limitations under the License.
 22      #
 23      ###############################################################################
 24     
 25  ->    import os
 26      from scriptine import run, path, log, command
 27      import re
 28      import numpy as np
 29     
 30      # Uncomment for mac os users
(Pdb) ?

Documented commands (type help <topic>):
========================================
EOF    bt         cont      enable  jump  pp       run      unt  
a      c          continue  exit    l     q        s        until
alias  cl         d         h       list  quit     step     up   
args   clear      debug     help    n     r        tbreak   w    
b      commands   disable   ignore  next  restart  u        whatis
break  condition  down      j       p     return   unalias  where

Miscellaneous help topics:
==========================
exec  pdb

Undocumented commands:
======================
retval  rv

(Pdb) exit

如果您知道要调试的代码行,可以直接将import pdb; pdb.set_trace()插入脚本中,然后正常运行该命令。这将在确切的时间点停止执行。

python pydial.py chat config/Tut-hdc-CamInfo.cfg

您可以安装的替代调试器是IPython调试器ipdb。要使用它,您可以添加-m ipdb或插入import ipdb; ipdb.set_trace()并再次正常运行该命令。

下面是重现我的例子的代码:

git clone git@bitbucket.org:dialoguesystems/pydial.git
cd pydial
# Switch the commit I used when creating this example
git checkout c215003f25b959ee350e192079d88e138e6e8dbf
# Create a conda environment
conda create -n pydial python=2.7 ipython ipdb
source activate pydial
pip install -r requirements.txt
# All the requirements weren't in requirements.txt
pip install scriptine matplotlib
python -m pdb pydial.py chat config/Tut-hdc-CamInfo.cfg