如何使用带有命令行参数的脚本运行 python 调试器?

问题描述 投票:0回答:3

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

python test.py arg1 arg2

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

import pdb
pdb.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

python bash debugging pdb
3个回答
13
投票

尝试:

python -m pdb test.py arg1 arg2

运行

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

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

2
投票

在 Spyder IDE (2.3.4) 中调试带有输入参数的 python 脚本

  1. 运行 > 配置...
  2. 选择运行配置>(选择打开的感兴趣的脚本)
  3. 常规设置> 命令行选项
    arg1 arg2 arg3
    (使用空格作为分隔符,就像在命令行中一样)
  4. 工作目录:(选择文件夹)
  5. 点击确定

然后从菜单中选择调试。这相当于在 Spyder 的 iPython 控制台中执行以下命令。

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

使用 PyCharm 执行此操作非常相似。

  1. 运行 > 编辑配置
  2. 从菜单中选择Python脚本
  3. Configuration
    窗格
  4. 脚本参数
    arg1 arg2

然后运行 > 调试 > 选择文件。

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

%run -d test.py arg1 arg2

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 命令来调试它。 请参阅 https://docs.python.org/2/library/pdb.html#debugger 了解 pdb 命令。

© www.soinside.com 2019 - 2024. All rights reserved.