gpt4 book ai didi

相当于 Perl $DB::single=1 的 python 调试点

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:55 26 4
gpt4 key购买 nike

我是一名学习 Python 的 Perl 程序员。我正在使用 python -m pdb script.py 在 emacs 调试中编写代码使用 Python 2.7.3。

我想知道在 Perl 中添加 $DB::single=1;1; 的 python 等同于什么到特定的 python 代码行,以便在运行调试器时,它会停在那里,即使它是与执行开始处不同的源代码文件(例如 script.py 使用的库中的一行代码)。

有什么想法吗?

已编辑:查看 pdb.set_trace() 后或 ipdb.set_trace() ,我认为它们是很好的解决方案,但与 $DB::single=1;1; 的行为并不 100% 相同。 .也就是说,我希望断点位于 set_trace 行,而不是下一行。这是在 Perl 的 $DB::single=1; 中完成的。通过在同一行中添加另一个语句:1; , 这使得它成为 $DB::single=1;1; .

使用 set_trace() ,即使我添加 1;,我也会在语句后的行得到断点在它之后。与 Perl 相比,仍然不完全理解 Python 如何处理多语句行。

有人吗?

enter image description here

有什么想法吗?

最佳答案

以下是否满足您的需求?

import ipdb; ipdb.set_trace()

只需将它写在您的代码中的某处,然后使用 python script.py 运行您的脚本。

你需要 ipython 调试器(ipython 是一个增强的 python 解释器):

pip install ipdb

编辑:您知道吗,如果您运行 M-x pdb RET pdb myscript.py RET,您将看到 pdb 提示,emacs 将跟踪源代码另一个缓冲区,但它不会在您定义 ipdb.set_trace() 的位置停止?

虚拟环境?

如果你使用虚拟环境,你有几个选择。我建议从 ELPA 安装 virtualenvwrapper 并运行 M-x venv-workon

关于相当于 Perl $DB::single=1 的 python 调试点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21780555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com