在Sublime Text 3中运行Python调试器(pdb)

34

如何在Sublime Text 3中设置Python调试器(pdb)断点?

SublimeREPLPython Breakpoints都无法使用默认的python构建系统。

print "hello"
# code runs fine without this breakpoint
import pdb; pdb.set_trace()
print "bye"

>>>File "C:\Python27\lib\bdb.py", line 49, in trace_dispatch
>>>return self.dispatch_line(frame)
    >>>File "C:\Python27\lib\bdb.py", line 68, in dispatch_line
    >>>if self.quitting: raise BdbQuit
上述问题似乎已经有记录,但没有明显的解决方法。或者答案一直在我眼前?

3
这个答案虽然没有解决stdin的问题,但是修复了stdout。当然,由于REPL已经定义好了stdin,所以这个方法可以很好地避开这个问题。 - Alex Huszagh
3
你尝试过在 github.com/obormot/PythonBreakpoints 上的插件吗? - James Vickery
为什么不使用甚至包括远程调试的Eclipse或PyCharm呢?Eclipse与PyDev甚至允许您在运行时注入代码。这些选项不能被考虑的原因是什么? - Rusty Weber
你尝试过将Python27可执行文件指向vanilla文件吗?是否返回相同的堆栈跟踪? - matthew.
3个回答

5
如果您不想处理额外的软件包,您可以创建一个代码片段来为您设置断点。
<snippet>
    <content><![CDATA[import pdb;pdb.set_trace()]]></content>
    <tabTrigger>pdb</tabTrigger>
    <scope>source.python</scope>
    <description>Insert a breakpoint</description>
</snippet>

当你在代码中输入 pdb 时,上面的代码片段将被触发。autocomplete window when the snippet is triggered

在Mac上的指令

  • 导航至 Tools -> Developer -> New Snippet
  • 使用上述代码片段替换模板
  • 将代码片段保存至 ~/Library/Application Support/Sublime Text 3/Packages/User
  • 确保文件名以 sublime-snippet 结尾(例如 breakpoint.sublime-snippet)

保存后应立即开始工作。

---------- 更新于2019年11月29日 ----------

如下所示,如果你使用 Python 3.7 或更高版本,则可以修改代码片段以使用内置的breakpoint()函数。 如果你使用 linter 或像黑色这样的实用工具来格式化代码,则这是特别方便的。 这将使它们停止抱怨或将上面的代码拆分成多行。 你可以使用下面的修订版代码片段:

<snippet>
    <content><![CDATA[breakpoint()]]></content>
    <tabTrigger>pdb</tabTrigger>
    <scope>source.python</scope>
    <description>Insert a breakpoint</description>
</snippet>

自Python 3.7起,您可以使用内置的breakpoint()函数,它将完全相同 - https://www.python.org/dev/peps/pep-0553/ - FamousSnake

4

Python断点插件和检查此链接python断点调试器

使用ctrl+shift+b在一行中切换断点

但是,使用文本编辑器调试软件并不是首选解决方案。有最好的IDE可使您的开发更加轻松

  • Visual Studio社区版

  • Pycharm

  • Eclipse

  • Komodo


3
你提到了我提出问题时参考的同样优秀的工具。 - ecoe
14
IDE的存在是众所周知的,但就像有些人还喜欢使用VIM一样,有些人也喜欢轻量级而又有一定功能的Sublime Text。对于他的问题来说,个人偏好并不特别相关。 - csga5000

-3
你可以尝试使用专门针对Python的集成开发环境(IDE),这将使得调试和设置Python项目变得非常容易。我建议你尝试使用免费的Pycharm社区版。

https://www.jetbrains.com/pycharm/download/


1
trincot - 自然而然,我不同意你的观点。例如在剪纸时,为什么要使用一把钝斧子呢?实际上你需要的是一把锋利的剪刀。解决方法是使用一个使Python开发超级容易的编辑器,这样你就不会有断点问题了。选择正确的工具是解决问题的关键。此外,Pycharm社区版是免费的,所以推广一个免费且非常稳定的产品有什么问题呢?@Raja似乎也同意我的看法。 - Johnny Gasyna
4
这不是一个答案,而是一个评论。 - Martin CR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接