Rex*_*Rex 110 python ipython python-2.7 pdb jupyter-notebook
据我所知,%debug magic
可以在一个单元格内进行调试.
但是,我有跨多个单元格的函数调用.
例如,
In[1]: def fun1(a)
def fun2(b)
# I want to set a breakpoint for the following line #
return do_some_thing_about(b)
return fun2(a)
In[2]: import multiprocessing as mp
pool=mp.Pool(processes=2)
results=pool.map(fun1, 1.0)
pool.close()
pool.join
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
我试着设置%debug
在cell-1的第一行.但它甚至在执行cell-2之前立即进入调试模式.
我试图%debug
在代码之前添加行return do_some_thing_about(b)
.但随后代码永远运行,永不停止.
在ipython笔记本中设置断点的正确方法是什么?
Leo*_*opd 88
您可以ipdb
在jupyter里面使用:
set_trace()
编辑:自IPython 5.1以来,不推荐使用上述函数.这是新方法:
help
添加ipdb
需要断点的位置.键入ipdb
用于set_trace()
命令输入字段出现时.
Tev*_*K O 63
使用ipdb
通过安装它
pip install ipdb
Run Code Online (Sandbox Code Playgroud)
用法:
In[1]: def fun1(a):
def fun2(a):
import ipdb; ipdb.set_trace() # debugging starts here
return do_some_thing_about(b)
return fun2(a)
In[2]: fun1(1)
Run Code Online (Sandbox Code Playgroud)
对于逐行执行n和步骤进入函数使用s并退出调试提示使用c.
有关可用命令的完整列表:https://appletree.or.kr/quick_reference_cards/Python/Python%20Debugger%20Cheatsheet.pdf
小智 13
你的返回函数符合def函数(主函数),你必须给它一个标签.并使用
%%debug
Run Code Online (Sandbox Code Playgroud)
代替
%debug
Run Code Online (Sandbox Code Playgroud)
调试整个单元格不仅仅是行.希望,也许这会对你有所帮助.
kro*_*ock 11
您可以随时在任何单元格中添加:
import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
并且调试器将在该行停止.例如:
In[1]: def fun1(a):
def fun2(a):
import pdb; pdb.set_trace() # debugging starts here
return fun2(a)
In[2]: fun1(1)
Run Code Online (Sandbox Code Playgroud)
只需键入import pdb
在jupyter笔记本,然后用这个的cheatsheet调试.这很方便.
c
- >继续,s
- >步骤,b 12
- >在第12行设置断点,依此类推.
在Python 3.7中,您可以使用breakpoint()函数。只需输入
breakpoint()
Run Code Online (Sandbox Code Playgroud)
无论您想在哪里停止运行时,都可以使用相同的pdb命令(r,c,n,...)或评估变量。
归档时间: |
|
查看次数: |
82455 次 |
最近记录: |