当前位置: 首页 > 面试题库 >

在iPython Notebook中进行调试的正确方法是什么?

闻人嘉木
2023-03-14
问题内容

据我所知,%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

我试过的

  1. 我试图%debug在cell-1的第一行中设置。但是它甚至在执行单元2之前就立即进入调试模式。

  2. 我试图%debug在代码之前添加该行return do_some_thing_about(b)。但是,代码永远运行,永不停止。

在ipython笔记本中设置断点的正确方法是什么?


问题答案:

使用 ipdb

通过安装

pip install ipdb

用法:

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)

用于逐行执行n和进入函数使用,s并退出调试提示使用c

有关可用命令的完整列表:https
:
//appletree.or.kr/quick_reference_cards/Python/Python%20Debugger%20Cheatsheet.pdf



 类似资料:
  • 问题内容: 我最近从Angular转到了ReactJs。我正在使用jQuery进行API调用。我有一个API,该API返回要打印在列表中的随机用户列表。 我不确定如何编写我的API调用。最佳做法是什么? 我尝试了以下操作,但未得到任何输出。如果需要,我愿意实现替代API库。 下面是我的代码: 问题答案: 在这种情况下,您可以在中进行ajax调用,然后进行更新

  • 问题内容: 我正在为MongoDB使用Node.JS驱动程序,我想执行一个同步查询,例如: 问题是,db.open是一个异步调用(它不会阻塞),因此getAThing返回“ undefined”,我希望它返回查询结果。我确定我可以使用某种阻止机制,但我想知道执行此类操作的正确方法。 问题答案: 没有办法使这种同步变得不可怕。正确的方法是接受回调函数作为参数,然后在可用时调用该函数。 节点7.6+更

  • 问题内容: 我正在寻找某种东西(最好是Firefox扩展),使我能够查看所有AJAX子请求。基本上,每当创建XMLHTTPRequest()时,我都想知道正在请求什么URL,以及随它一起传递了什么(如果有的话)GET和POST变量。 除非我想念它,否则在Firebug或Web Developer Toolbar中看不到任何类似的东西。 (以防万一,您想要这样做的主要原因是我想抓取使用JS加载其所有

  • 我使用apache ignite缓存作为数据存储。想知道是否有方法从客户端对大型数据集合进行分页。我不需要或希望数百万的记录从服务器转移到我的网络/移动客户端。 这是一个有效的方法吗? 我看过使用游标,但API仅限于迭代器...

  • 问题内容: 当每个呼叫都取决于之前的呼叫是否已完成时,我试图找到创建异步呼叫的最佳方法。目前,我通过递归调用定义的流程函数来链接方法,如下所示。 这就是我目前正在做的。 然后我将其称为如下 虽然这对我来说非常好,但我不禁认为必须有一种更好(更简单)的方法。以后我的递归调用变得太深时,会发生什么? 注意 :我不是在浏览器中使用javascript,而是在Titanium框架中使用本机,这类似于Nod