【问题标题】:Run Python Debugger (pdb) in Sublime Text 3在 Sublime Text 3 中运行 Python 调试器 (pdb)
【发布时间】:2015-05-17 19:33:41
【问题描述】:

如何在 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

上述问题出现documented,但没有明显的修复。还是答案一直盯着我看?

【问题讨论】:

  • 看到这个:stackoverflow.com/a/16385039/4131059 它不能解决stdin 的问题,但它确实解决了stdout。当然,因为对于 REPL,stdin 已经定义,这很好地解决了这个问题。
  • 你试过github.com/obormot/PythonBreakpoints的插件了吗?
  • 你为什么不使用甚至包括远程调试的eclipse或pycharm?带有 pydev 的 Eclipse 甚至允许您在运行时注入代码。是否有理由不能考虑这些选项?
  • 你试过将 Python27 可执行文件指向原版文件吗?是否返回相同的堆栈跟踪?

标签: python sublimetext3 breakpoints sublime-text-plugin sublimerepl


【解决方案1】:

python 断点插件并检查此链接python breakpoint debugger

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

但它不是使用文本编辑器调试软件的首选解决方案。 有最好的 IDE 让你的开发更容易

  • visual studio 社区版

  • Pycharm

  • Eclipse

  • 科莫多

【讨论】:

  • 你引用了我提出问题的同一个 sublime 工具。
  • IDE 的存在是众所周知的,但正如有些人仍然喜欢使用 VIM 一样,有些人也喜欢重量轻但仍然有些强大的 sublime 文本。有意见与他的问题并不特别相关。
【解决方案2】:

如果你不想处理额外的包,你可以创建一个 sn -p 来为你设置断点。

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

只要你在代码中输入pdb,上面的sn-p就会触发。

Mac 使用说明

  • 导航到工具 -> 开发人员 -> 新代码段
  • 用上面的sn-p替换模板
  • 将 sn-p 保存到 ~/Library/Application Support/Sublime Text 3/Packages/User
  • 确保名称以 sublime-sn-p 结尾(例如 breakpoint.sublime-sn-p)

它应该在保存后立即开始工作。

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

正如@FamousSnake 在下面的 cmets 中所提到的,如果您使用的是 Python 3.7 或更高版本,则可以修改 sn-p 以使用内置的 breakpoint() 函数。如果您使用 linter 或黑色等实用程序来格式化代码,这将特别方便。它应该让他们停止抱怨或将上面的代码分成多行。你可以使用下面修改后的sn-p:

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

【讨论】:

【解决方案3】:

您可以尝试使用特定于 Python 的 IDE,这使得调试和设置 Python 项目变得非常容易。我会推荐你​​试试 Pycharm 的免费社区版。

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

【讨论】:

  • trincot - 当然,我不得不不同意你的观点。例如,当您在剪纸时实际需要一把锋利的剪刀时,为什么还要使用钝斧呢?解决方案是使用一个让 python 开发变得超级简单的编辑器,这样你一开始就没有断点问题。为工作选择正确的工具是解决方案,此外,Pycharm 社区版是免费的,那么推广超级可靠的免费产品有什么问题? @Raja 似乎同意。
  • 这不是答案;这是一条评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多