【问题标题】:How to invoke pdb from command line while running library module as a script?如何在将库模块作为脚本运行时从命令行调用 pdb?
【发布时间】:2017-02-19 02:50:52
【问题描述】:

我正在调用 python 解释器,如下所示

python -m MyModule.main 

在这个用例中,有没有一种简单的方法可以通过命令行调用 pdb 调试器?

【问题讨论】:

  • 我发现的一个选项是在函数中调用pdb.set_trace(),但我不想每次都修改源代码。
  • 我发现python -m pdb my_script.py 调用pdb 的方式非常方便。在这个用例中是否有类似的可能?
  • 您只需运行模块的main.py。这就是-m 所做的。
  • 在这种情况下,我在非包错误中得到相对导入。 from .Config import Config ValueError: Attempted relative import in non-package Uncaught exception. Entering post mortem debugging

标签: python pdb


【解决方案1】:

您可以在 python 文件上执行 pdb,其效果与使用 runpy 模块执行 python -m MyModule.main 的效果相同(请参阅 https://www.python.org/dev/peps/pep-0338/#id16),例如在类 UNIX 操作系统上作为命令:

python -m pdb <(echo "import runpy;runpy.run_module('MyModule.main', run_name='__main__', alter_sys=True)")

这可以概括为一个可以添加到 bash_profile 的函数:

function pdb-m { python -m pdb <(echo "import runpy;runpy.run_module('$1', run_name='__main__', alter_sys=True)") "${@:2}" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2021-05-02
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    相关资源
    最近更新 更多