Ane*_*pic 41
您可以键入l
ipdb以显示当前上下文的几行
并且您可以继续点击l
并继续从文件中显示更多行
如果要在当前行周围显示更多上下文行,可以键入l
以获取当前行.然后输入l curr_line - 10, curr_line + 10
.说我在第50行,我想看到周围的20行.我会打字:l 40,60
看到更多.
正如@jrieke在评论中指出的那样,你也ll
可以获得更大的上下文.一个好处ll
是它会从当前方法的开头一直打印出来(而连续的l
s会在断点下面显示更多的行).
Gar*_*ett 18
您可以通过以下方式获得更多上下文
ipdb.set_trace(context=21)
Run Code Online (Sandbox Code Playgroud)
(在0.10.0中引入的一个错误打破了这一点,但应尽快修复)
要永久设置上下文大小,请执行以下操作来查找安装目录
python -c 'import ipdb; print(ipdb)'
Run Code Online (Sandbox Code Playgroud)
这将显示一个__init__.py
文件.打开该文件并找到该行(也可以在IPDB中找到__main__.py
:
def set_trace(frame=None, context=3):
Run Code Online (Sandbox Code Playgroud)
将所需的3
上下文行更改为多个上下文行.
fas*_*ion 12
好的,我在IPython源代码中找到了这个地方.在我的安装中,它在
.../python2.7/site-packages/ipython-0.10.2-py2.7.egg/IPython/Debugger.py:327:
Run Code Online (Sandbox Code Playgroud)
改变这个:
def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
context = 3):
Run Code Online (Sandbox Code Playgroud)
至
def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
context = 11):
Run Code Online (Sandbox Code Playgroud)
太棒了!
对于IPython 4.0.1,在debugger.py中添加以下内容:
class Pdb(OldPdb):
"""Modified Pdb class, does not load readline."""
def __init__(self,color_scheme='NoColor',completekey=None,
stdin=None, stdout=None, context=None):
context=20
Run Code Online (Sandbox Code Playgroud)
您可以输入以下行~/.ipdb
以使 ipdb 自动设置:
context = 10
Run Code Online (Sandbox Code Playgroud)
如果您想根据 shell 配置进行持久设置,也可以使用IPDB_CONTEXT_SIZE
变量。将以下内容添加到您的~/.bashrc
//~/.zshrc
等中:
export IPDB_CONTEXT_SIZE=10
Run Code Online (Sandbox Code Playgroud)
感谢N1ngu指出了这一点。
但请记住,这是在ipdb
其本身中实现的,而不是在 中实现的IPython
,因此虽然它在与 一起使用时可以工作ipdb.set_trace()
,但它不适用于%debug
魔法。
从 IPython 7.21 开始,您还可以使用context
ipdb 中的命令来更改显示的回溯行数:
context = 10
Run Code Online (Sandbox Code Playgroud)
除此之外,还有旧的context=
参数set_trace()
,这使得可以在运行调试器时设置它:
export IPDB_CONTEXT_SIZE=10
Run Code Online (Sandbox Code Playgroud)