这个问题我想了很久,但一直没有找到合适的解决方案。如果我运行一个脚本,遇到一个IndexError, python会打印出错误的行、位置和快速描述,然后退出。是否有可能在遇到错误时自动启动pdb ?我并不反对在文件顶部添加额外的import语句,也不反对添加几行额外的代码。
当前回答
你可以在代码中加入这一行:
import pdb ; pdb.set_trace()
更多信息:在任意一行启动python调试器
其他回答
你可以在代码中加入这一行:
import pdb ; pdb.set_trace()
更多信息:在任意一行启动python调试器
要让它运行而不需要在开始时输入c,请使用:
python -m pdb -c c <script name>
Pdb有自己的命令行参数:-c c将在执行开始时执行c(continue)命令,程序将不间断地运行,直到出现错误。
如果您正在使用ipython,启动后键入%pdb
In [1]: %pdb
Automatic pdb calling has been turned ON
如果你正在运行一个模块:
python -m mymodule
现在你想在异常发生时输入pdb,这样做:
PYTHONPATH="." python -m pdb -c c mymodule/__main__.py
(或扩展PYTHONPATH)。由于您现在正在运行pdb模块,因此需要PYTHONPATH以便在路径中找到模块。
Ipython有一个用于切换这种行为的命令:%pdb。它所做的与您所描述的完全相同,甚至可能更多(通过语法高亮显示和代码补全为您提供更多信息回溯)。这绝对值得一试!
推荐文章
- 如何在Python中做指数和对数曲线拟合?我发现只有多项式拟合
- 创建独立变量字典的简单方法?
- 在Python中创建一个初始容量的列表
- Pylint在Visual Studio代码中“未解决的导入”错误
- Matplotlib错误-没有名为tkinter的模块
- 0到1之间的随机数?
- 使用Boto3将S3对象作为字符串打开
- "pip install——editable ./" vs "python setup.py develop"
- Pandas:索引数据帧时的多个条件-意外行为
- 如何更改Django应用程序的名称?
- 如何在python抽象类中创建抽象属性?
- “克隆”行或列向量
- 在python shell中按方向键时看到转义字符
- Linux有c++ gdb图形用户界面吗?
- 在pip install中方括号是什么意思?