问题标签 [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.
python - 是否可以跳过 pdb / ipdb 中的断点?
有没有办法告诉 pdb 或 ipdb 跳过所有未来的断点并完成执行,就好像它们不存在一样?
python-3.x - Python 调试器没有进入协程?
在下面的示例中:
我正在尝试进入
loop.create_datagram_endpoint( EchoServerProtocol, local_addr=('127.0.0.1', 9999))
了解它在内部的行为方式。但是,当我尝试进入协程时,调试器只是跳过它,就好像n
被按下而不是s
.
PyCharm (2016 2.3 Community) IDE 体验到了这种行为。
我希望到此结束,并能够进一步逐步完成代码。
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 编辑器运行它时,会出现以下异常:
python - 调试phantomJS webdriver时python输入滞后
所以我试图调试我们使用 ipdb 运行 django/phantomjs/selenium-webdrive 的测试,但是交互式调试器输入太慢,我需要按住一个键 3-5 秒才能写下该字符。
所以我追踪了它并发现它在启动 phantomJS 之后就发生了
代码
知识产权数据库
我怎样才能解决这个问题?为什么会这样?
编辑:我什至在调试时尝试使用 IPython 来查看输入速度问题是否消失,尝试失败。
编辑:复制步骤
为了重现相同的问题,安装 phantomjs 和 selenium for python
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 中止执行。这不是关于如何重组上面的代码,所以它可以工作!
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 文件
编辑
python - 发生异常后在最旧的堆栈帧中启动 python 调试器
我将该--pdb
命令与 ipython 一起使用,因此当我调试代码并发生错误时,它会显示堆栈跟踪。许多这些错误来自调用带有错误输入的 numpy 或 pandas 函数。堆栈跟踪从这些库的代码中的最新帧开始。5-10 次重复该up
命令之后,我实际上可以看到我做错了什么,这在 90% 的情况下会立即显现出来(例如,使用列表而不是数组调用)。
有什么方法可以指定调试器最初从哪个堆栈帧开始?最初运行的 python 文件中最旧的堆栈帧或最新的堆栈帧,或类似的。这对于调试来说会更有效率。
这是一个简单的例子
为清楚起见,添加了生成的回溯,(A)、(B)、(C)
现在理想情况下,我希望调试器从 (B) 处的第二旧帧开始,甚至在 (A) 处开始。但绝对不是默认情况下的 (C)。
python - ipdb 调试器中的 IPython 帮助功能
通过help命令或使用?可以在标准 IPython shell 中获得帮助。特点。例如,对于内置sum函数的帮助,可以使用 IPython shell 中的以下任一命令。
我想在ipdb调试器中具有相同的功能。通过将以下代码放置在调试断点的位置来进入ipdb调试器。
但是,一旦进入ipdb调试器,帮助功能就不再起作用。
下面的命令代表了一种在ipdb调试器中打印文档字符串的方法,但这与help(sum)和sum的功能不完全相同?在 IPython 外壳中。
那么如何在 IPython shell 中存在的 ipdb 调试器中获得相同的帮助功能?
python - IPython (Jupyter) 笔记本中的交互式调试
为了调试我的 python 代码,我使用ipdb
库,并使用set_trace()
命令放置断点。一旦代码到达那里,我会得到一个带有ipdb>
提示的交互式 shell,我可以使用选项卡自动完成来探索局部变量。
但是,在 IPython (Jupyter) 笔记本ipdb.set_trace()
中不起作用。正如这篇文章所建议的那样:
使用 ipdb 在一个单元格中调试 python 代码(jupyter 或 Ipython)
我使用以下替代方法进行交互式调试:
这给了我ipdb>
提示,但选项卡自动完成功能不可用。是否有使用 ipython notebook 启用交互式调试的自动完成功能?这非常有用,特别是当您有很多具有长名称的变量时。