Sublime Forum

What Features do you look for in a Debugger?

#1

In terms of User interface, I would like to hear what features are best in a debugger. Even better, if you have knowledge of Sublime’s API and capabilities, suggestions for how to implement interface features would be great.

I have a alpha version of a debugger plugin right now, it will be open source and available soon, but I want to nail some solid features first. It is using the DBGp protocol so it should be compliant with any debuggers using DBGp, but I am testing it with xdebug on php 5.3 under osx and it is working great so far.

Would really like user input on where to take this plugin!

0 Likes

#2
  • Breakpoints. (Yes simple, but can’t live without it)

  • Stepping into, outside, next.

  • Call stack view.

  • View contents of a specific memory address, and variable.

  • Goto definition/declaration, like ctrl-clicking a variable or function.

  • IntelliSense

  • Possibility to have profiling info for each line displayed (i.e. in the gutter), like SmartBear’s excellent AQTime

  • Remote debugging possibilities.

  • SVN/CVS/Git/… Blame possibilities, preferably displayed in the gutter bar.

  • Inline code documentation, like showing formatted doxygen combined with the intellisense.

  • A descent project file format where relative paths are preferred (for VCS software).

0 Likes

#3

I think OP is just asking for the essentials that you look for in a debugger, not what the definition of a world-class makes-you-coffee-in-the-morning debugger is.

For myself…

  • Breakpoints

  • Break on first line should be optional

  • Break on errors / exceptions (not essential)

  • View backtrace for the current breakpoint

  • View variables for current breakpoint (separate local and global scope)

  • View output (not essential)

  • Step into, over, next, “skip all”, stop

Looking incredibly forward to seeing your addon :smile: I’m tired of switching to a third party solution for debugging.

If you need any testers feel free to contact me. I’m not a python developer but I’ve messed around with dbgp in the past.

0 Likes

#4

[quote=“Naatan”]

  • Stepping into, outside, next.

  • Call stack view.

  • View contents of a specific memory address, and variable.

  • Goto definition/declaration, like ctrl-clicking a variable or function.

  • IntelliSense

  • Possibility to have profiling info for each line displayed (i.e. in the gutter), like SmartBear’s excellent AQTime

  • Remote debugging possibilities.

  • SVN/CVS/Git/… Blame possibilities, preferably displayed in the gutter bar.

  • Inline code documentation, like showing formatted doxygen combined with the intellisense.

  • A descent project file format where relative paths are preferred (for VCS software).

I think OP is just asking for the essentials that you look for in a debugger, not what the definition of a world-class makes-you-coffee-in-the-morning debugger is.

For myself…

  • Breakpoints

  • Break on first line should be optional

  • Break on errors / exceptions (not essential)

  • View backtrace for the current breakpoint

  • View variables for current breakpoint (separate local and global scope)

  • View output (not essential)

  • Step into, over, next, “skip all”, stop

Looking incredibly forward to seeing your addon :smile: I’m tired of switching to a third party solution for debugging.

If you need any testers feel free to contact me. I’m not a python developer but I’ve messed around with dbgp in the past.[/quote]

Working on large scale projects, I’ve come to grow addicted of the profiler, stack view, and variable view have become essential in debugging solutions. In my oppinion breakpoints, step into, over out of, callstack view are all essentials, that no debugger should be without, and really should be needless to mention. But in a debugger I really look for a tool that will aid me in my everyday life, and to be honest “small” things like the location of the profiler information or the vcs blame messages, are really some of the most productivity boosting abilities that I have found during my career as a developer.

0 Likes

#5

[quote=“Barium”]

  • Stepping into, outside, next.

  • Call stack view.

  • View contents of a specific memory address, and variable.

  • Goto definition/declaration, like ctrl-clicking a variable or function.

  • IntelliSense

  • Possibility to have profiling info for each line displayed (i.e. in the gutter), like SmartBear’s excellent AQTime

  • Remote debugging possibilities.

  • SVN/CVS/Git/… Blame possibilities, preferably displayed in the gutter bar.

  • Inline code documentation, like showing formatted doxygen combined with the intellisense.

  • A descent project file format where relative paths are preferred (for VCS software).

I think OP is just asking for the essentials that you look for in a debugger, not what the definition of a world-class makes-you-coffee-in-the-morning debugger is.

For myself…

  • Breakpoints

  • Break on first line should be optional

  • Break on errors / exceptions (not essential)

  • View backtrace for the current breakpoint

  • View variables for current breakpoint (separate local and global scope)

  • View output (not essential)

  • Step into, over, next, “skip all”, stop

Looking incredibly forward to seeing your addon :smile: I’m tired of switching to a third party solution for debugging.

If you need any testers feel free to contact me. I’m not a python developer but I’ve messed around with dbgp in the past.

Working on large scale projects, I’ve come to grow addicted of the profiler, stack view, and variable view have become essential in debugging solutions. In my oppinion breakpoints, step into, over out of, callstack view are all essentials, that no debugger should be without, and really should be needless to mention. But in a debugger I really look for a tool that will aid me in my everyday life, and to be honest “small” things like the location of the profiler information or the vcs blame messages, are really some of the most productivity boosting abilities that I have found during my career as a developer.[/quote]

I was referring more to your mention of IntelliSense, per-line profiling, VCS integration and inline documentation :smile: Although they all sound like awesome features to have, I personally would be perfectly willing to go without them for the sake of being able to debug inside Sublime Text.

0 Likes

#6

While I also agree features such as vcs integration, intelisense, inline documentation are worth while, They can be in other packages. I think a package should do one thing and do it well, not try to cover everything.

I do not know of which features you need, but I know there is a git package that works decently, “SublimeCodeIntel” provides some more “intelisense” like features. I currently don’t know of any documentation related packages.

Thanks for your notes so far, currently I am trying to decide on the breakpoint interface. My first idea is to have a icon show in the gutter, but i’m not sure what beyond that. Should the icon be different for different types of breakpoints? Should I apply some highlight scope to the line itself (this then messes with peoples themes).

For showing variables defined, I haven’t decided on the best Sublime-UI to use. The most obvious idea is to use a control like the sidebar, but unfortunately that is not available to the API at the moment and i know of no plans to make it so. The other option is to have a quick panel, so you would activate it with a keyboard shortcut, then see a list of contexts, such as global, instance or local variables, which you can select. Then it would show another quick panel with each variable name, and possibly its value.
If the variable is an array or hash type it would have yet another child quick panel (this can go on forever until the panel is closed.)
If the variable is a string, i would limit how many characters are shown on the panel itself, and when the vrible is selected a temporary window could open with the contents.

0 Likes

#7

Hey Kindari,

I highly recommend you take a look at SublimeGDB. Although I have not used it, judging from the screenshots I think he came up with a pretty decent solution.

As for the breakpoints, I’d say a gutter icon alone is fine. Highlighting lines would just be annoying for developers. I’m sure Jon will add the ability to use custom gutter icons at some point, especially when he sees promising plugins not being able to rise to their potential due to these types of limitations.

0 Likes

#8

Naatan, thanks a lot for pointing me to that! it was nice to see a similar implementation, will definitely influence some of my decisions.

0 Likes

#9

Any news on this topic? =)

0 Likes

#10

github.com/Kindari/SublimeXdebug is my work so far. Watch and stay tuned!

0 Likes

#11

kindari - could you start a plugin thread to keep people informed on this?

PS as someone who is new to xDebug, your plugin (so far) is kinda confusing. There’s no menu item, just a shortcut, and adding breakpoints is slow (I don’t see a shortcut to do so - you have to go through the prompt). Also it would be cool if your GIThub page showed how to get it running. It’s all just kind of assumed…

0 Likes