【问题标题】:Breakpoints set from Python Breakpoints packages didn't work从 Python Breakpoints 包设置的断点不起作用
【发布时间】:2015-07-30 19:11:02
【问题描述】:

我刚刚安装了 sublime text 2、控制包和 python 断点。好吧,我正在尝试使用这些包的断点功能,但它不起作用。我使用的是 Ubuntu 14.04.2 LTS。

这只是一个测试代码

import pdb; pdb.set_trace()  
p = 'Hello World'
print p

当我运行它时,会发送以下输出消息:

> /home/teste.py(5)<module>()
-> p = 'Hellow World'
(Pdb) Traceback (most recent call last):
  File "/home/teste.py", line 5, in <module>
    p = 'Hellow World'
  File "/home/teste.py", line 5, in <module>
    p = 'Hellow World'
  File "/usr/lib/python2.7/bdb.py", line 49, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/lib/python2.7/bdb.py", line 68, in dispatch_line
    if self.quitting: raise BdbQuit
bdb.BdbQuit

我会很高兴得到任何帮助。

【问题讨论】:

  • 我不使用 sublime 但你是如何运行它的? BdbQuit 通常是在您在 PDB 解释器中发出 EOF 字符(比如 Linux 上的 Ctrl-D)时引起的。
  • 好吧,我使用命令 Ctrl-B 运行代码,这是 Build in sublime text 2 的快捷键。
  • 一点谷歌搜索告诉我 Sublime Text 不处理任何类型的嵌入式 REPL(解释器)。所以你的断点工作正常,但 Sublime 会立即让你退出 REPL。有各种项目(如this one)旨在解决这个问题,但开箱即用就是它的工作方式。 BdbQuit 只是 Sublime 退出方式的正常例外。
  • 那么,如果我运行代码,例如,从终端 pdb 会工作吗?
  • 应该的。如果没有,你还有另一个问题。我想强调一下,它现在似乎可以工作了,但是有东西(大概是 Sublime)告诉它立即退出。

标签: python sublimetext2 breakpoints pdb


【解决方案1】:

这个问题有了答案:

似乎 Sublime Text 本身不支持任何类型的REPL。上面的断点正在工作,但以 BdbQuit 异常退出,当 pdb REPL 收到 EOF 时引发,这是“退出”的常用方法(也适用于 bash、zsh、python 解释器等)。显然 Sublime Text 会立即发送此内容,因为它无法打开 REPL。

非集成解决方案

不要使用 Sublime Text 运行代码。通过命令行 (python my_script.py) 或 Python 解释器(通过导入和运行)激活此断点确实会按预期将您放入 pdb 解释器。

集成解决方案

有一些项目(比如我在上面的 cmets 中提到的this one)可以为 Sublime 添加 REPL 支持。我个人不使用 Sublime Text,所以我不能推荐一个,也不知道那个好不好。

如果有任何 Sublime 专家出现,请随时改进此答案或在 cmets 中提出替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 2021-03-29
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多