簡體   English   中英

在IPython(Jupyter)筆記本中進行交互式調試

[英]Interactive debugging in IPython (Jupyter) notebook

為了調試我的python代碼,我使用ipdb庫,並使用set_trace()命令放置一個斷點。 一旦代碼到達那里,我得到一個帶有ipdb>提示符的交互式shell,我可以使用tab autocompletion來探索局部變量。

但是,在IPython(Jupyter)筆記本中, ipdb.set_trace()不起作用。 正如這篇文章所建議的: 使用ipdb在一個單元格中調試python代碼(jupyter或Ipython)

我使用以下替代方法進行交互式調試:

from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger

這給了我ipdb>提示符,但是標簽自動完成功能不可用。 無論如何使用ipython筆記本啟用自動完成交互式調試? 這非常有用,特別是當你有很多長名稱的變量時。

在Python 3.7中,您可以使用breakpoint()函數

此函數會將您置於調用站點的調試器中。 具體來說,它調用sys.breakpointhook(),直接傳遞args和kws。 默認情況下,sys.breakpointhook()調用pdb.set_trace()期望沒有參數。 在這種情況下,它純粹是一個便利功能,因此您不必顯式導入pdb或輸入盡可能多的代碼來進入調試器。 但是,sys.breakpointhook()可以設置為其他一些函數,breakpoint()會自動調用它,允許你進入選擇的調試器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM