13

我想用 pdb 调试我的插件,但它不起作用。我收到这些错误

Traceback (most recent call last):
  File "./sublime_plugin.py", line 362, in run_
  File "./useIt.py", line 14, in run
    for region in self.view.sel():
  File "./useIt.py", line 14, in run
    for region in self.view.sel():
  File ".\bdb.py", line 46, in trace_dispatch
  File ".\bdb.py", line 65, in dispatch_line
bdb.BdbQuit

有人有想法吗?或者其他调试 sublime 插件的方法?

4

4 回答 4

18

问题是通常sys.stdin不依附于任何东西。但是,如果你从控制台启动 SublimeText2 确实有效:sys.stdin

  • 在 Mac 上,通过在终端中输入完整路径找到资源包中的可执行文件来启动应用程序:

    /Applications/Sublime\ Text\ 2.app/Contents/MacOS/Sublime\ Text\ 2
    
  • 在 Windows 上,从 Windows 控制台启动应用程序:

    "C:\Program Files\Sublime Text 2\sublime_text.exe"
    

    临时的,我没有安装 Windows Sublime Text 2 所以这个命令行是基于一个快速的谷歌

现在应用程序有一个控制台;但sys.stdout仍被重定向到内置的 SublimeText 2 控制台。你想用正确的 启动你的调试器stdout,那个仍然连接到你的控制台。代替import pdb; pdb.set_trace(), 使用:

import pdb, sys; pdb.Pdb(stdout=sys.__stdout__).set_trace()

原始控制台stdout保存在sys.__stdout__其中,并通过将其传递给pdb.Pdb()您获得功能齐全的pdb会话。

于 2013-05-05T13:30:54.200 回答
4

我发现最简单的方法是使用 Visual Studio。

您应该拥有 Visual Studio 的 Python 开发工具(您可以通过打开 Visual Studio 安装程序、单击更多、修改并选择 Python 开发来下载它们)。

要进行调试,您需要打开 Visual Studio,从工具栏中选择:调试 - 附加到进程 (Ctrl+Alt+P),然后找到“plugin_host.exe”并附加。然后打开你的文件'plugin.py'并在某处放置一个断点,你就可以开始了。

于 2018-09-24T11:38:32.960 回答
2

在我的插件上工作时,我对 pdb 的运气并不好,并且“打印”不是一种高效的调试体验(例如,如果您不确定缺陷在哪里,您可能会添加很多“打印” -然后必须在之后删除它们)。

如果您运行 Windows,则有一个更好的选择。用于 Visual Studio的最新版本 2.2 的Python 工具非常适合调试 Sublime 插件。您可以获得 Visual Studio 的所有常规调试功能,这是一种完美的体验。只需在附加对话框中选择“pluginhost.exe”和 Python 调试引擎。在 2.2 之前,Python 工具对 Sublime 不能正常工作,例如步进被破坏。

披露:我在 Visual Studio 中工作,但不使用这些工具。我最近与 Python 工具开发人员合作,修复了使用这些工具编写插件时遇到的错误。

Visual Studio 2015的社区版对个人开发人员和小型组织免费。只需确保在设置对话框中检查 Python 工具即可。当然,您必须运行 Windows。

于 2015-08-15T19:33:27.440 回答
1

您的问题是sys.stdin sys.stdout (编辑:stdout 进入控制台)连接到 sublime 文本的内部 - 您希望能够在哪里控制调试器?

你想要的是一个远程调试接口,它通过 stdio 以外的东西进行交互,例如rpdb.

于 2013-05-05T13:04:29.907 回答