如何在开发过程中调试sublime插件

时间:2013-05-05 12:39:35

标签: python debugging sublimetext2 sublimetext pdb

我想用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 个答案:

答案 0 :(得分:17)

问题是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所以此命令行基于快速Google

现在应用程序有一个控制台;但是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,您将获得功能齐全的{{1}}会话。

答案 1 :(得分:2)

使用我的插件,我对pdb没有太多运气,“print”不是一种有效的调试体验(例如,如果你不确定缺陷在哪里,你可能会添加很多“打印“ - 然后必须删除它们。”

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

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

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

答案 2 :(得分:2)

我找到的最简单的方法是使用Visual Studio。

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

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

答案 3 :(得分:1)

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

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