在多线程Python代码中遇到Emacs pdb和断点问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在多线程Python代码中遇到Emacs pdb和断点问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1474字,纯文字阅读大概需要3分钟。
内容图文
![在多线程Python代码中遇到Emacs pdb和断点问题](/upload/InfoBanner/zyjiaocheng/775/650def7ebf794e558471bbb2d2f31673.jpg)
我正在使用python.el运行Emacs 23.2并使用pdb调试一些Python代码.
我的代码使用线程模块生成一个兄弟线程,我在run()方法的开头设置了一个断点,但是pdb永远不会处理它,即使代码肯定运行并且适用于所有意图和目的.
我的印象是我可以使用pdb在任何线程中建立断点,即使实际上不支持完整的多线程调试.
我错误地假设在一个M-x内的pdb pdb调用可以在任何线程中中断吗?如果你不相信我自己尝试这个最小的例子.
import threading
class ThreadTest(threading.Thread):
def __init__(self,):
threading.Thread.__init__(self)
def run(self):
print "Type M-x pdb, set a breakpoint here then type c <RET>..."
print "As you can see it does not break!"
if __name__ == '__main__':
tt = ThreadTest()
tt.start()
感谢Pierre和他引用的书籍文本,我尝试了包含pdb.set_trace()的选项,如下所示:
def run(self):
import pdb; pdb.set_trace()
print "Set a breakpoint here then M-x pdb and type c..."
但是这只会破坏并为步骤,下一步,继续等提供pdb控件,如果它是从控制台执行并直接在Python解释器中运行,而且至关重要的是不通过M-x pdb – 至少我的Emacs和pdb配置.
所以我原来的问题可以改写:
有没有办法从Emacs中调用Python程序,其中该程序使用内联调用pdb(从而支持多线程应用程序中断),以及是否有自动魔法建立的pdb comint控制缓冲区?
要么
如果我使用M-x pdb运行我的Python应用程序并且它包含pdb的内联调用,那么如何最好地处理这会导致pdb-session-in-a-pdb-session与相关的控制权丧失?
解决方法:
你使用默认的python.el?我已经放弃了并开始使用python-mode.el.然后键入M-x shell,从提示符类型python myproblem.py(当然用你的程序名替换),它将停在set_trace行.它与pdb集成开箱即用. (它适用于您的程序).
内容总结
以上是互联网集市为您收集整理的在多线程Python代码中遇到Emacs pdb和断点问题全部内容,希望文章能够帮你解决在多线程Python代码中遇到Emacs pdb和断点问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。