Have there been any improvements in debuggers in the past 20 years or so? When I start up pdb I feel like nothing has changed. Am I missing something huge?
What innovations, specifically, have been added to debuggers in recent years?
Have there been any improvements in debuggers in the past 20 years or so? When I start up pdb I feel like nothing has changed. Am I missing something huge?
What innovations, specifically, have been added to debuggers in recent years?
There are lots - just like in every other field of software development. A good example is the reverse-*
set of gdb
commands, which were added to gdb
as recently as 2009.
Visual Studio has added IntelliTrace
This allows you to rewind your app and see the value of variables historically, not just the current state of your app.
I think "debuggers" have stayed the same for a quite a while. Most just give you information about callstack, threads, locals, globals and maybe some expression evaluation. That feature set is pretty well defined and it works so it hasn't change much. It probably doesn't need to.
A debugger helps you figure out your program flow where as many other diagnostic tools have decided to focus on very specific issues. Instead of limiting ourselves to the traditional debugger lets look at the whole space of diagnostic tools since they also help us debug our problems.
There are certainly main more tools that help with debugging very specific issues: profilers, network traffic analyzers (WireShark, HTTPFox), many SysInternals tools, and even /proc.
Visual Studio's debugger visualisations are such a massive productivity boon, especially when working with C# or the C++ STL. It also has previewers for block text, html, xml and even DataSets. The STL support shows vectors, maps, sets and lists.
In VS2010 there's also much improved support for multithreading with parallel callstacks.
When I have to debug on Xcode or with gdb I feel like I'm dragged back into the dark ages (Xcode won't even show local variables reliably half the time, and getting unicode strings to display is a nightmare)