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

719*_*016 3 python debugging emacs

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

我想知道在Perl中添加一个$DB::single=1;1;特定的python代码行的python等价是什么,这样当运行调试器时,它将停在那里,即使它是执行开始的不同源代码文件(例如正在使用的库中的一行代码script.py.

有任何想法吗?

编辑:看后pdb.set_trace()还是ipdb.set_trace(),我认为他们好的解决办法,但不是100%相同的行为$DB::single=1;1;.这是,我希望断点位于set_trace行,而不是下一行.这是在Perl中$DB::single=1;通过在同一行中添加另一个语句来实现的:1;这就是它$DB::single=1;1;.

使用set_trace(),我在语句后面的行中获得断点,即使我1;在它之后添加.与Perl相比,仍然没有完全理解Python如何处理多语句行.

任何人?

在此输入图像描述

有任何想法吗?

Ehv*_*nce 6

以下是否满足您的需求?

import ipdb; ipdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

只需在代码中的某处写入它并运行脚本即可python script.py.

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

pip install ipdb
Run Code Online (Sandbox Code Playgroud)

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

虚拟环境?

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