问题标签 [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.

0 投票
2 回答
2593 浏览

python - 多线程 Python 代码中的 Emacs pdb 和断点问题

我正在运行 Emacs 23.2python.el并使用pdb.

我的代码使用该模块生成了一个同级线程,threading并且我在方法的开头设置了一个断点,但是即使代码确实运行并且适用于所有意图和目的,run()也从未处理过中断。pdb

我的印象是我可以用来pdb任何线程中建立断点,即使实际上不支持完整的多线程调试。

pdb假设在M-x pdb调用中可以在任何线程中中断,我错了吗?如果您不相信我,请自己尝试这个最小的示例。

感谢 Pierre 和他提到的书本,我尝试了以下选项pdb.set_trace()

但这只会中断并提供pdbstep、next、continue等的控制,如果它是从控制台执行并直接在 Python 解释器中运行,并且关键不是通过M-x pdb- 至少使用我的 Emacs 和pdb配置。

所以我最初的问题可能与改写有关:

有没有办法从 Emacs 中调用 Python 程序,该程序使用 pdb 的内联调用(从而支持多线程应用程序中的中断),并且自动建立一个 pdb comint 控制缓冲区?

或者

如果我使用 Mx pdb 运行我的 Python 应用程序并且它包含 pdb 的内联调用,那么如何最好地处理这会导致 pdb-session-within-a-pdb-session 以及相关的失控这一事实?

0 投票
1 回答
1184 浏览

python - 如何以编程方式退出在 eval() 或 exec() 中启动的 pdb 而不显示输出

在我的 python 代码中,我有这一行:

command变量可以是任何字符串。因此,python 调试器pdb可以在 / 中启动,eval并且在/返回exec时仍然处于活动状态。我想要做的是确保从/返回时恢复正常的程序执行。只是给你一个想法,这大约是我想要的行为:evalexecevalexec

但是,该try行在执行之前显示在调试器中,但我根本不希望调试器显示我的代码。它也不起作用......我重复代码的原因是为了尽量减少代码中的调试,否则我可以在except块之后执行它。

那么我该怎么做呢?

作为旁注:

如果您尝试在 IPython 或 bpython 解释器中输入以下行,您会发现它们存在相同的问题,并且您可以单步执行它们的代码。

但是,如果您在标准 cpython 解释器中执行此操作,您将返回到 python 提示符。之所以会这样,显然是因为前两个是用python实现的,而最后一个不是。但我的愿望是即使所有代码都是 python 也能获得相同的行为。

0 投票
2 回答
1903 浏览

python - 监控 pdb 中对象的状态

我正在使用 python 2.4 并尝试调试扭曲的应用程序。

有什么方法可以让我监视一个对象并在其值更改时中断执行。

例如

从 A.state="connected" 开始我想要的是在 A.state 更改其值时通知或暂停执行。

我是 pdb 的新手并且很扭曲,所以如果您觉得这个问题需要更多信息,我可以提供。

0 投票
2 回答
55955 浏览

python - Python 调试器 pdb 入门

我想将pdb(Python 调试器)添加到我的工具箱中。最好的开始方式是什么?

0 投票
7 回答
22108 浏览

python - Python 单元测试:测试失败时自动运行调试器

有没有办法在单元测试失败时自动启动调试器?

现在我只是手动使用 pdb.set_trace() ,但这非常繁琐,因为我每次都需要添加它并在最后取出它。

例如:

0 投票
1 回答
302 浏览

python - 修改 Python 以在交互模式下接受 continue 语句的好主意?

作为使用pdb的替代方法,continue在使用python -i. 这样,raw_input('continue->')在我的脚本中的提示符处,我可以中断、检查/修改内容,然后使用命令直接返回raw_input提示符(或任何导致异常的代码)continue。循环外的break命令也可以重新用于对称性,但我对此的用处较少。在为此提交 PEP 之前,我想从 Python 社区获得一些反馈。

仅使用 PYTHONSTARTUP 脚本和模块就可以做类似的事情inspect,但如果是这样,我还没有弄清楚。

0 投票
1 回答
849 浏览

python - 如何将 pdb 注入失败的 Python 脚本?

我正在开发一个 django 项目,该项目有一个不加载的大型夹具:

问题是堆栈跟踪没有让我知道夹具上的哪一行导致了这个错误。我该如何调试呢?我唯一能想到的是 ipythgon 中有一个功能,每当您执行某些操作并引发异常时,ipython 会自动注入 pdb 提示符,以便您可以四处走动以弄清楚发生了什么。我该怎么做呢?是否有用于执行此操作的 python 命令行开关?我可以在这里做些什么来调试这个?

0 投票
4 回答
24376 浏览

python - 使用 nosetests --pdb 选项设置断点

nosetests --pdb让我在错误或失败时停下来,但这对我的需要来说太晚了。在执行期间单步执行代码有助于我调试问题所在。

但是,nosetests 很有帮助,因为它们允许依赖于相对导入的测试(即包中的测试)。

如何在执行测试之前设置断点?目前我正在使用:

这个解决方案是不够的。Nosetests 会干扰 pdb 输出,并且我的键盘控件(例如箭头键)已损坏。

使用导入 pdb;pdb.set_trace() 似乎是个好主意,但是 nosetests 阻止了我对 pdb 控制台的访问。

0 投票
4 回答
15950 浏览

python - 如何在 python PDB 中列出当前行?

在 perl 调试器中,如果您重复列出带您离开当前行的代码段,您可以通过输入命令.(点)返回当前行。

使用 python PDB 模块我无法找到任何可比的东西。如果我将自己从当前行列出并想再次查看它,似乎我必须记住当前正在执行的行号(对我来说不太可能)或执行一条语句(通常不受欢迎)。

我错过了什么吗?

0 投票
2 回答
699 浏览

django - pdb的问题

在我试过的 django shell 上

但是在最后一条语句中,在第一次点击继续后,我得到了一个堆栈跟踪

什么地方出了错 ?:(