使用来自终端的参数调试python脚本

时间:2015-04-10 12:01:08

标签: python bash debugging pdb

我有一个python脚本,它接受输入参数并运行以响应终端中的以下命令(bash,Mac OSX)。

python test.py arg1 arg2

有没有一种很好的方法可以在调试模式下运行相同的脚本,而无需编辑代码以包含import pdbpdb.set_trace()

例如,如果我使用iPython控制台,我可以通过以下方式执行此操作:

%run -d test.py arg1 arg2

这很简单,不是吗?为了在终端中实现同样的目的,我认为以下可能有效,但它没有:

python -c "import pdb; import sys; sys.argv = ['test.py', arg1, arg2];pdb.run('test.py')"

代码使用参数运行,但不在pdb的调试模式下运行。是不是很难做到,我应该坚持pdb.set_trace或iPython' %run -d

3 个答案:

答案 0 :(得分:8)

尝试:

python -m pdb test.py arg1 arg2

正在运行python -m pdb作为脚本运行pdb。如果test.py位于您的路径中的某个位置而不是当前的工作目录中,那么这可能是一个有用的替代方案:

python -m pdb "$(which test.py)" arg1 arg2

答案 1 :(得分:1)

在Spyder IDE(2.3.4)

中调试带有输入参数的python脚本
  1. 运行>的配置 ...
  2. 选择运行配置> (选择打开的感兴趣的脚本)
  3. 常规设置> 命令行选项arg1 arg2 arg3(使用空格作为分隔符,就像在命令行中一样)
  4. 工作目录:(选择文件夹)
  5. 点击确定
  6. 然后从菜单中调试。这相当于在Spyder的iPython控制台中执行以下命令。

    debugfile('/Users/xxx/xxx/test.py', args='arg1 arg2', wdir='/Users/xxx/xxx/')
    

    使用PyCharm非常相似。

    1. 运行> 修改配置
    2. 从菜单中选择python脚本
    3. Configuration窗格
    4. 脚本参数arg1 arg2
    5. 然后运行> 调试>选择文件。

      在iPyhton Console中你也可以尝试这个(假设test.py在你当前的文件夹中):

      %run -d test.py arg1 arg2
      

答案 2 :(得分:0)

支持您拥有以下代码

for i in range(200):
    print i

您可以通过添加

开始调试
  

pdb.set_trace()

例如

import pdb
pdb.set_trace()
for i in range(200):
    print i

代码将在

处中断
  

pdb.set_trace()

一旦代码停止,您可以使用pdb命令对其进行调试。 有关pdb命令,请参阅https://docs.python.org/2/library/pdb.html#debugger