问题标签 [ipdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
7050 浏览

python - 是否可以跳过 pdb / ipdb 中的断点?

有没有办法告诉 pdb 或 ipdb 跳过所有未来的断点并完成执行,就好像它们不存在一样?

0 投票
1 回答
830 浏览

python-3.x - Python 调试器没有进入协程?

在下面的示例中:

我正在尝试进入

loop.create_datagram_endpoint( EchoServerProtocol, local_addr=('127.0.0.1', 9999))

了解它在内部的行为方式。但是,当我尝试进入协程时,调试器只是跳过它,就好像n被按下而不是s.

PyCharm (2016 2.3 Community) IDE 体验到了这种行为。

我希望到此结束,并能够进一步逐步完成代码。

0 投票
1 回答
4107 浏览

python - 通过“import ipdb”准备调试会话时出现“名称错误:未定义名称‘get_ipython’”

我正在尝试使用 PIP 8.1.2 在 Win10 上的 Python 3.3.5 32 位上安装和使用 ipdb(启用 IPython 的 pdb)。我已经在 windows cmd 中通过 PIP 安装(必须单独安装),没有错误:

我写了一个简单的测试脚本,希望在打印“测试”字符串ipdb_test.py之前在调试器中停止:

从 IDLE 编辑器运行它时,会出现以下异常:

0 投票
0 回答
100 浏览

python - 调试phantomJS webdriver时python输入滞后

所以我试图调试我们使用 ipdb 运行 django/phantomjs/selenium-webdrive 的测试,但是交互式调试器输入太慢,我需要按住一个键 3-5 秒才能写下该字符。

所以我追踪了它并发现它在启动 phantomJS 之后就发生了

代码

知识产权数据库

我怎样才能解决这个问题?为什么会这样?

编辑:我什至在调试时尝试使用 IPython 来查看输入速度问题是否消失,尝试失败。

编辑:复制步骤

为了重现相同的问题,安装 phantomjs 和 selenium for python

0 投票
2 回答
1205 浏览

python - 如何在 pdb.set_trace() 之后停止 python 程序

在 Python(2.7,在 Linux 上运行)中调试脚本时,我偶尔会注入 pdb.set_trace()(注意我实际上使用的是 ipdb),例如:

我通常从 shell 运行我的脚本,例如

有时在调试会话期间,我意识到我不想运行 do_something_dangerous()。停止程序执行以便 do_something_dangerous() 不运行并且我可以退出到 shell 的最简单方法是什么?

据我了解,按下 ctrl-d (或发出调试器的退出命令)将简单地退出 ipdb 并且程序将继续运行(在我上面的示例中)。按 ctrl-c 似乎会引发一个 KeyboardInterrupt 但我从来没有理解它被引发的上下文。

我希望像 ctrl-q 这样的东西可以简单地完成整个过程,但我找不到任何东西。

我知道我的示例非常做作,但我的问题是关于当设置正在调试的代码以捕获异常时如何从 pdb 中止执行。这不是关于如何重组上面的代码,所以它可以工作!

0 投票
1 回答
873 浏览

python - ipdb 命令被变量遮挡

当我尝试使用 ipdb 调试此示例脚本时:

我无法执行第 3 行,因为 python 变量掩盖了 pdb 命令:

当不再识别两个命令(n/next)时,如何进一步执行代码?(假设 s/step 也被变量所掩盖)。

到目前为止我尝试了什么:

  • 使用 ipdb3 而不是 ipdb - 同样的问题(可能是因为在我的情况下 ipdb 链接到 ipdb3 :))
  • 使用 pdb - 它有效!n/next 命令移至下一行,而不是显示 python 变量。我的ipdb怎么了?
  • !!n缓解了这个问题 - 它运行 ipdb 版本的next. 如果我可以alias n !!n然后重复使用Enter它来执行它,那么问题就会为我解决。但Enter只显示变量n而不是运行别名n(应该解析为!!n

我在用着

  • Manjaro Linux 16.10
  • Python 3.5.2 :: Anaconda 4.2.0(64 位)
  • ipdb (0.10.1)
  • ipython (5.1.0)
  • ipython-genutils (0.1.0)
  • 我没有 ~/.pdbrc 文件

编辑

该问题由以下人员修复:https ://github.com/ipython/ipython/pull/10050

0 投票
1 回答
1055 浏览

python - 发生异常后在最旧的堆栈帧中启动 python 调试器

我将该--pdb命令与 ipython 一起使用,因此当我调试代码并发生错误时,它会显示堆栈跟踪。许多这些错误来自调用带有错误输入的 numpy 或 pandas 函数。堆栈跟踪从这些库的代码中的最新帧开始。5-10 次重复该up命令之后,我实际上可以看到我做错了什么,这在 90% 的情况下会立即显现出来(例如,使用列表而不是数组调用)。

有什么方法可以指定调试器最初从哪个堆栈帧开始?最初运行的 python 文件中最旧的堆栈帧或最新的堆栈帧,或类似的。这对于调试来说会更有效率。

这是一个简单的例子

为清楚起见,添加了生成的回溯,(A)、(B)、(C)

现在理想情况下,我希望调试器从 (B) 处的第二旧帧开始,甚至在 (A) 处开始。但绝对不是默认情况下的 (C)。

0 投票
1 回答
637 浏览

python - ipdb 调试器中的 IPython 帮助功能

通过help命令或使用?可以在标准 IPython shell 中获得帮助。特点。例如,对于内置sum函数的帮助,可以使用 IPython shell 中的以下任一命令。

我想在ipdb调试器中具有相同的功能。通过将以下代码放置在调试断点的位置来进入ipdb调试器。

但是,一旦进入ipdb调试器,帮助功能就不再起作用。

IPython shell 和 ipdb 调试器的帮助

下面的命令代表了一种在ipdb调试器中打印文档字符串的方法,但这与help(sum)和sum的功能不完全相同在 IPython 外壳中。

那么如何在 IPython shell 中存在的 ipdb 调试器中获得相同的帮助功能?

0 投票
1 回答
4305 浏览

python - IPython (Jupyter) 笔记本中的交互式调试

为了调试我的 python 代码,我使用ipdb库,并使用set_trace()命令放置断点。一旦代码到达那里,我会得到一个带有ipdb>提示的交互式 shell,我可以使用选项卡自动完成来探索局部变量。

但是,在 IPython (Jupyter) 笔记本ipdb.set_trace()中不起作用。正如这篇文章所建议的那样: 使用 ipdb 在一个单元格中调试 python 代码(jupyter 或 Ipython)

我使用以下替代方法进行交互式调试:

这给了我ipdb>提示,但选项卡自动完成功能不可用。是否有使用 ipython notebook 启用交互式调试的自动完成功能?这非常有用,特别是当您有很多具有长名称的变量时。

0 投票
2 回答
2762 浏览

python - 无法在 docker 容器中输入 ipdb 控制台

我正在使用 docker-compose 构建我的 docker 容器,并使用如下--service-ports标志运行容器:

当尝试在容器中的 python 脚本中调用 ipdb 时,使用import ipdb; ipdb.set_trace()ipdb 已初始化,但我无法在控制台中键入任何内容。我还必须手动重新启动终端会话才能停止它(CTRL+CCTRL+D什么都不做)。终端也没有冻结,因为我仍然可以向后滚动并且在焦点/取消焦点时光标也会改变外观。

这就是我的术语的样子(我使用iTerm): 在此处输入图像描述

任何想法如何解决这一问题?