使用shebang时自动调用pdb / ipdb?

时间:2015-01-01 16:19:24

标签: python debugging

我想在我的脚本中使用shebang行,例如

#! /usr/env/bin python

但是在调试时我也希望自动调用pdb / ipdb,如下所示:

python -m ipdb myscript.py

有没有办法将这些结合起来?换句话说,是否有一个版本的shebang也将在失败时自动调用pdb / ipdb?类似的东西:

#! /usr/env/bin python -m ipdb

1 个答案:

答案 0 :(得分:1)

你不能轻易地在shebang行传递额外的参数,因为shell没有解析参数。有work-arounds for that

然而,我会在异常时调用事后调试器。如果您的脚本中有main()功能,请使用:

try:
    main()
except Exception:
    import ipdb, sys
    ipdb.post_mortem(sys.exc_info()[2])

其中ipdb.post_mortem()必须采用追溯对象。 pdb.post_mortem()版本不需要它,因为如果没有传入回溯,它会自行选择它。