默認情況下,在IPython的調試過程中,ipdb在代碼中的當前位置之上顯示一行,一行顯示。如何在調試時讓ipdb顯示更多上下文?
是否有簡單的方法可以使區域顯得更大?我認爲這是可配置的,但一直未能找到它。
默認情況下,在IPython的調試過程中,ipdb在代碼中的當前位置之上顯示一行,一行顯示。如何在調試時讓ipdb顯示更多上下文?
是否有簡單的方法可以使區域顯得更大?我認爲這是可配置的,但一直未能找到它。
好的,我在IPython源代碼中找到了這樣的地方。在我安裝它在
.../python2.7/site-packages/ipython-0.10.2-py2.7.egg/IPython/Debugger.py:327:
更改此:
def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
context = 3):
到
def print_stack_entry(self,frame_lineno,prompt_prefix='\n-> ',
context = 11):
這是真棒!
對於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
您可以輸入IPDB l
顯示當前上下文
的幾行,你可以保持打l
並繼續顯示文件中的更多行
如果要在當前行的周圍顯示更多行上下文,可以鍵入l
以獲取當前行。然後輸入l curr_line - 10, curr_line + 10
。說我在線50,我想看看周圍的20條線。我會輸入:l 40,60
以查看更多。
正如@jrieke在評論中指出的那樣,您還可以點擊ll
以獲得更大的上下文。關於ll
的一個好處是它會從當前方法的開頭一直打印回來(而連續的l
會在您的斷點之下顯示更多的行)。
添加到:你也可以輸入'll '一次獲得更多的線路 – jrieke 2017-07-24 01:02:55
我認爲這個答案應該是可以接受的。 – stefanfoulis 2017-08-09 09:12:49
問題要求默認完成此操作,而不是通過其他用戶操作。 – fastmultiplication 2017-10-10 20:53:52
您可以通過執行獲得更多的背景:
ipdb.set_trace(context=21)
(有a bug在0.10.0打破這個出臺,但應該很快就會固定)
要永久設置上下文大小,通過執行找到安裝目錄
python -c 'import ipdb; print(ipdb)'
這將告訴你一個__init__.py
文件。打開該文件,並找到線(也可在IPDB的__main__.py
發現:
def set_trace(frame=None, context=3):
改變你想要的3
到然而,許多上下文行
我找到了我在不同的文件在Ubuntu 12.04 -/usr/lib/python2.7/dist-packages/IPython/core/debugger.py – user1953384 2013-12-20 20:00:02
用裸手編輯依賴包的腸子不是你通常想要配置的東西.. – 2015-08-21 12:34:43