如何让ipdb在调试时显示更多上下文行?
默认情况下,在使用IPython调试时,ipdb会在代码中显示当前行的上一行和下一行。
有没有简单的方法可以让显示的区域变大一点?我觉得这个应该可以设置,但我找不到相关的选项。
8 个回答
24
编辑:这个回答有点过时,建议查看@Błażej Michalik的回答。
你可以通过以下方式获取更多信息:
ipdb.set_trace(context=21)
永久设置上下文大小
要永久设置上下文的大小,首先需要找到安装目录,可以通过以下命令:
python -c 'import ipdb; print(ipdb)'
这会显示一个 __init__.py
文件。打开这个文件,找到那一行(在IPDB的 __main__.py
文件中也可能找到):
def set_trace(frame=None, context=3):
把 3
改成你想要的上下文行数。
49
你可以在ipdb里输入l
,这样就能看到当前上下文的更多行。
而且你可以一直按l
,它会继续显示文件中的更多行。
如果你想查看当前行周围的更多行,可以先输入l
来获取当前行。然后输入l curr_line - 10, curr_line + 10
。比如说我在第50行,想看看周围的20行,我就可以输入:l 40,60
来查看更多内容。
正如@jrieke在评论中提到的,你也可以按ll
来获取更大一块的上下文。使用ll
的一个好处是,它会从当前方法的开始位置打印所有内容(而连续按l
只会显示你断点下方的更多行)。
13
简单的方法 - 2022
- 找出你是从哪里加载ipdb的
import ipdb
print(ipdb.__file__)
- 打开那个文件夹里的
__main__.py
- 搜索
except (configparser.NoSectionError, configparser.NoOptionError):
- 在它下面有个3,把它改成你想要的值
为什么这个方法比正式的方法更好:
- 我不需要学习新的配置语言
- 我不需要创建新的配置文件
- 我不需要调试为什么我的配置文件没有被识别
- 你不会被文件的作用域/权限/可见性搞糊涂,因为你知道加载的是哪个ipdb模块(也就是说,它也适用于虚拟环境)
- 我不需要和上游沟通,试图说服他们采用这个默认设置。