Especially when debugging JavaScript in an environment without any built-in browser debugger. If you ever have to debug JavaScript running inside a .NET WebBrowser control the debugger statement will help you keep your sanity.
I have an emacs macro that redirects stdout and hooks in ipdb, the i here is important because it's an ipython wrapped pdb session. It's amazing.
JS is the usual Chrome debugger instrumentation.
Clojure is a mixture of REPL, println, and Ritz. Tbqh, Clojure needs an ipdb equivalent. Ritz is really ghetto. I realize the REPL suffices for most people but I'm accustomed to injecting my full programming environment dynamically into my runtime, not having two disjoint realities.
When I work with C#, I use a debugger all the time. Learning how to attach a debugger to a running process saves a lot of headaches in the long run.
On the other hand, when I work with Python, I rarely had to use a debugger. Python's grammar is so simple that simply reading through the code is usually enough to spot most errors.
Having been spoilt by the calibre of Microsoft debugging tools earlier on in my development career it's one of the very first things I get working when approaching new environments/languages. It's especially helpful when learning a language as experimentation is often a lot quicker than RTFM.
For me, TDD, a REPL and the occasional console print statement almost completely eliminates the need for a debugger. That being said, I probably fire it up every couple of months when working on a java or .net project. #java #scala #ruby #javascript #.net
IF the problem lends itself to debugging then a hearty "YES!" is my answer. Eclipse/Java is my debugger of choice but there are also fine standalone debuggers like JSwat or even the command line debugger.
24 comments
[ 2368 ms ] story [ 1947 ms ] threadCommon Lisp's debugger, accessed via slime is the best thing since running water.
Also a big fan of WingIDE's debugger for python.
JS is the usual Chrome debugger instrumentation.
Clojure is a mixture of REPL, println, and Ritz. Tbqh, Clojure needs an ipdb equivalent. Ritz is really ghetto. I realize the REPL suffices for most people but I'm accustomed to injecting my full programming environment dynamically into my runtime, not having two disjoint realities.
Generally those situations are places where print statements are not allowed.
edit: gdb to debug asm and C code
On the other hand, when I work with Python, I rarely had to use a debugger. Python's grammar is so simple that simply reading through the code is usually enough to spot most errors.
https://github.com/zv/zdb
For "serious" stuff, I have a .gdbinit file that makes GDB much more usuable, check it out if you have time.
https://raw.github.com/zv/dotfilez/master/gdbinit
This is the nicest python debugger I've used.