Run Python Debugger (pdb) in Sublime Text 3
Asked Answered
S

3

34

How can you set python debugger (pdb) breakpoints in Sublime Text 3?

Both SublimeREPL or Python Breakpoints fail with default python build system:

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

Above issue appears documented, but with no obvious fix. Or has the answer been staring at me?

Sequin answered 15/3, 2015 at 17:50 Comment(4)
See this: https://mcmap.net/q/452144/-how-to-debug-sublime-plugins-during-development It doesn't fix the stdin issue, but it does fix stdout. Of course, since for the REPLs, stdin is already defined, this skirts the issue nicely.Inculcate
Have you tried the plugin at github.com/obormot/PythonBreakpoints?Overstock
Why don't you use eclipse or pycharm which even include remote debugging? Eclipse with pydev will even allow you to inject code while running. Is there a reason that these options cannot be considered?Anastasia
Have you tried pointing the Python27 executable to the vanilla file? Does the same stack trace come back?Soniasonic
R
5

If you don't want to deal with additional packages, you can create a snippet to set the breakpoint for you.

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

The above snippet will trigger whenever you type pdb in your code.autocomplete window when the snippet is triggered

Instructions On a Mac

  • Navigate to Tools -> Developer -> New Snippet
  • Replace the template with the snippet above
  • Save the snippet to ~/Library/Application Support/Sublime Text 3/Packages/User
  • Ensure the name ends with sublime-snippet (ex. breakpoint.sublime-snippet)

It should start working immediately after saving.

---------- UPDATE 29 NOV 2019 ----------

As mentioned by @FamousSnake in the comments below, you can modify the snippet to use the built-in breakpoint() function if you're using Python 3.7 or higher. This is especially convenient if you use linters or utilities like black to format your code. It should get them to stop complaining or splitting the code above into multiple lines. You can use the revised snippet below:

<snippet>
    <content><![CDATA[breakpoint()]]></content>
    <tabTrigger>pdb</tabTrigger>
    <scope>source.python</scope>
    <description>Insert a breakpoint</description>
</snippet>
Republic answered 1/9, 2019 at 17:36 Comment(1)
Since python 3.7 you can use built-in breakpoint() function that will do exactly the same - python.org/dev/peps/pep-0553Kava
A
4

python breakpoint plugin and check this link python breakpoint debugger

Use ctrl+shift+b to toggle breakpoint in a line

But its not preferable solution for debugging a software using a text editor. There are best IDE which makes your development lot easier

  • visual studio community edition

  • Pycharm

  • Eclipse

  • Komodo

Audette answered 17/8, 2016 at 8:5 Comment(2)
you've referenced the same sublime tool that I based my question on.Sequin
The existence of IDE's is well known, but much as some people still prefer to use VIM, some people also prefer the light weight and still somewhat powerful sublime text. Having opinions isn't especially relevant to his question.Unamuno
D
-3

You could try to use an IDE specific for Python which makes debugging and setting up python projects really easy. I would recommend you try the free community version of Pycharm.

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

Dogberry answered 15/7, 2016 at 19:37 Comment(2)
trincot - Naturally, I will have to disagree with you. Why use a dull axe when what you actually need is a pair of sharp scissors when cutting some paper, for instance? The solution is to use an editor that makes python development super easy, so that you do not have the breakpoint issue in the first place. Choosing the right tool for the job is the solution here, Furthermore, Pycharm community edition is FREE, so what is wrong with promoting a free product, which is super solid? @Raja seems to agree.Dogberry
This is not an answer; it's a comment.Prink

© 2022 - 2024 — McMap. All rights reserved.