使用 shebang 时自动调用 pdb/ipdb?
Automatically invoking pdb/ipdb while using shebang?
我想在我的脚本中使用 shebang 行,例如
#! /usr/env/bin python
但在调试时我还希望 pdb/ipdb 被自动调用,如:
python -m ipdb myscript.py
有没有办法把它们结合起来?换句话说,是否有一个版本的 shebang 也会在失败时自动调用 pdb/ipdb?类似于:
#! /usr/env/bin python -m ipdb
您不能轻易地在 shebang 行上传递额外的参数,因为 shell 不会解析出参数。有work-arounds for that.
不过,我会在异常时调用 post-mortem 调试器。如果您的脚本中有 main()
函数,我会使用:
try:
main()
except Exception:
import ipdb, sys
ipdb.post_mortem(sys.exc_info()[2])
其中 ipdb.post_mortem()
必须采用回溯对象。 pdb.post_mortem()
版本不需要它,因为如果没有传入回溯,它会自行选择它。
我想在我的脚本中使用 shebang 行,例如
#! /usr/env/bin python
但在调试时我还希望 pdb/ipdb 被自动调用,如:
python -m ipdb myscript.py
有没有办法把它们结合起来?换句话说,是否有一个版本的 shebang 也会在失败时自动调用 pdb/ipdb?类似于:
#! /usr/env/bin python -m ipdb
您不能轻易地在 shebang 行上传递额外的参数,因为 shell 不会解析出参数。有work-arounds for that.
不过,我会在异常时调用 post-mortem 调试器。如果您的脚本中有 main()
函数,我会使用:
try:
main()
except Exception:
import ipdb, sys
ipdb.post_mortem(sys.exc_info()[2])
其中 ipdb.post_mortem()
必须采用回溯对象。 pdb.post_mortem()
版本不需要它,因为如果没有传入回溯,它会自行选择它。