这个问题我想了很久,但一直没有找到合适的解决方案。如果我运行一个脚本,遇到一个IndexError, python会打印出错误的行、位置和快速描述,然后退出。是否有可能在遇到错误时自动启动pdb ?我并不反对在文件顶部添加额外的import语句,也不反对添加几行额外的代码。


当前回答

你可以在代码中加入这一行:

import pdb ; pdb.set_trace()

更多信息:在任意一行启动python调试器

其他回答

如果您正在使用ipython,启动后键入%pdb

In [1]: %pdb
Automatic pdb calling has been turned ON

你可以在代码中加入这一行:

import pdb ; pdb.set_trace()

更多信息:在任意一行启动python调试器

python -m pdb -c continue myscript.py

如果你没有提供-c continue标志,那么你需要在执行开始时输入'c'(代表continue)。然后它会运行到错误点并在那里给你控制权。正如eqzx所提到的,该标志是python 3.2中的新添加,因此在早期的python版本中需要输入'c'(请参阅https://docs.python.org/3/library/pdb.html)。

Python -m PDB script.py在python2.7中按continue start,它将运行到错误处并在那里中断以进行调试。

Ipython有一个用于切换这种行为的命令:%pdb。它所做的与您所描述的完全相同,甚至可能更多(通过语法高亮显示和代码补全为您提供更多信息回溯)。这绝对值得一试!