问题标签 [pdb]
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 - 多线程 Python 代码中的 Emacs pdb 和断点问题
我正在运行 Emacs 23.2python.el
并使用pdb
.
我的代码使用该模块生成了一个同级线程,threading
并且我在方法的开头设置了一个断点,但是即使代码确实运行并且适用于所有意图和目的,run()
也从未处理过中断。pdb
我的印象是我可以用来pdb
在任何线程中建立断点,即使实际上不支持完整的多线程调试。
pdb
假设在M-x pdb
调用中可以在任何线程中中断,我错了吗?如果您不相信我,请自己尝试这个最小的示例。
感谢 Pierre 和他提到的书本,我尝试了以下选项pdb.set_trace()
:
但这只会中断并提供pdb
对step、next、continue等的控制,如果它是从控制台执行并直接在 Python 解释器中运行,并且关键不是通过M-x pdb
- 至少使用我的 Emacs 和pdb
配置。
所以我最初的问题可能与改写有关:
有没有办法从 Emacs 中调用 Python 程序,该程序使用 pdb 的内联调用(从而支持多线程应用程序中的中断),并且自动建立一个 pdb comint 控制缓冲区?
或者
如果我使用 Mx pdb 运行我的 Python 应用程序并且它包含 pdb 的内联调用,那么如何最好地处理这会导致 pdb-session-within-a-pdb-session 以及相关的失控这一事实?
python - 如何以编程方式退出在 eval() 或 exec() 中启动的 pdb 而不显示输出
在我的 python 代码中,我有这一行:
command
变量可以是任何字符串。因此,python 调试器pdb
可以在 / 中启动,eval
并且在/返回exec
时仍然处于活动状态。我想要做的是确保从/返回时恢复正常的程序执行。只是给你一个想法,这大约是我想要的行为:eval
exec
eval
exec
但是,该try
行在执行之前显示在调试器中,但我根本不希望调试器显示我的代码。它也不起作用......我重复代码的原因是为了尽量减少代码中的调试,否则我可以在except
块之后执行它。
那么我该怎么做呢?
作为旁注:
如果您尝试在 IPython 或 bpython 解释器中输入以下行,您会发现它们存在相同的问题,并且您可以单步执行它们的代码。
但是,如果您在标准 cpython 解释器中执行此操作,您将返回到 python 提示符。之所以会这样,显然是因为前两个是用python实现的,而最后一个不是。但我的愿望是即使所有代码都是 python 也能获得相同的行为。
python - 监控 pdb 中对象的状态
我正在使用 python 2.4 并尝试调试扭曲的应用程序。
有什么方法可以让我监视一个对象并在其值更改时中断执行。
例如
从 A.state="connected" 开始我想要的是在 A.state 更改其值时通知或暂停执行。
我是 pdb 的新手并且很扭曲,所以如果您觉得这个问题需要更多信息,我可以提供。
python - Python 调试器 pdb 入门
我想将pdb(Python 调试器)添加到我的工具箱中。最好的开始方式是什么?
python - Python 单元测试:测试失败时自动运行调试器
有没有办法在单元测试失败时自动启动调试器?
现在我只是手动使用 pdb.set_trace() ,但这非常繁琐,因为我每次都需要添加它并在最后取出它。
例如:
python - 修改 Python 以在交互模式下接受 continue 语句的好主意?
作为使用pdb的替代方法,continue
在使用python -i
. 这样,raw_input('continue->')
在我的脚本中的提示符处,我可以中断、检查/修改内容,然后使用命令直接返回raw_input
提示符(或任何导致异常的代码)continue
。循环外的break
命令也可以重新用于对称性,但我对此的用处较少。在为此提交 PEP 之前,我想从 Python 社区获得一些反馈。
仅使用 PYTHONSTARTUP 脚本和模块就可以做类似的事情inspect
,但如果是这样,我还没有弄清楚。
python - 如何将 pdb 注入失败的 Python 脚本?
我正在开发一个 django 项目,该项目有一个不加载的大型夹具:
问题是堆栈跟踪没有让我知道夹具上的哪一行导致了这个错误。我该如何调试呢?我唯一能想到的是 ipythgon 中有一个功能,每当您执行某些操作并引发异常时,ipython 会自动注入 pdb 提示符,以便您可以四处走动以弄清楚发生了什么。我该怎么做呢?是否有用于执行此操作的 python 命令行开关?我可以在这里做些什么来调试这个?
python - 使用 nosetests --pdb 选项设置断点
nosetests --pdb
让我在错误或失败时停下来,但这对我的需要来说太晚了。在执行期间单步执行代码有助于我调试问题所在。
但是,nosetests 很有帮助,因为它们允许依赖于相对导入的测试(即包中的测试)。
如何在执行测试之前设置断点?目前我正在使用:
这个解决方案是不够的。Nosetests 会干扰 pdb 输出,并且我的键盘控件(例如箭头键)已损坏。
使用导入 pdb;pdb.set_trace() 似乎是个好主意,但是 nosetests 阻止了我对 pdb 控制台的访问。
python - 如何在 python PDB 中列出当前行?
在 perl 调试器中,如果您重复列出带您离开当前行的代码段,您可以通过输入命令.
(点)返回当前行。
使用 python PDB 模块我无法找到任何可比的东西。如果我将自己从当前行列出并想再次查看它,似乎我必须记住当前正在执行的行号(对我来说不太可能)或执行一条语句(通常不受欢迎)。
我错过了什么吗?
django - pdb的问题
在我试过的 django shell 上
但是在最后一条语句中,在第一次点击继续后,我得到了一个堆栈跟踪
什么地方出了错 ?:(