[...]
I don't know. All of the IDE's I've used (especially Visual
Studios, but that may be only because I've used it much more
than the others) have been very counter productive. Even when
developing under Windows, may primary development environment is
vim/bash/msbuild. About the only time I do use an IDE is when I
go into the debugger, which isn't that often. (Under Unix, I
use it even less, because tools like valgrind are often more
effective.)
Well, I think there are basically 2 kinds of developers. One group likes
IDE based development more, one console based development.
Since I like IDE based development, I don't care that much about using
vim/vi etc., though I like the speed of command line tools.
I tried to use such tools too, but I frequently forget the command line
instructions of the debugger / compiler and therefore deal more with
reading documentation than writing source code.
Drivers, for example, are developed under Windows from the command line
too. (there must be many former Unix/VMS developers doing core
development at Microsoft ;-) )
What do you mean by "easier to handle"? For most things, most
of the IDE debuggers are pretty much equivalent. There are
things that the Unix debuggers do better, but generally, their
big advantage is that they are based on a more powerful
debugger, and have a command window which allows using it.
There is an immediate mode in the IDE and for example the free Windows
Debugger is more command line centric (and much more powerful than the
one shipped with VStudio - but IMHO more complex to understand, since
there are much more commands to know - just like in GDB)
I sometimes have the impression, that developers in both "worlds" (Unix,
Windows) don't know that much about the "other world". I frequently try
to be up to date what's going on under Linux (Unix) regarding
development tools. But unfortunately, getting a deep knowledge about the
development tools needs just too much time.
I too like the speed of command line tools, but I miss the comfort of
the IDE, so I prefer IDEs and "live" with some downsides.
Things like setting breakpoints, getting a stack walkback, and
continuing from a breakpoint are about the same with all
debuggers I've used. On the other hand, gdb will always show
the return value when stepping out of a function,
The MS debugger (all of them I know) shows the return values too.
and it's easy
to display an arbitrary expression with gdb---it's much more
painful with the MS debugger. As it happens, those are two of
the most frequent things I need when debugging live code. (One
of the most frequent uses of a debugger under Unix is post
mortem debugging. Which isn't possible under Windows, but
that's not the fault of the debugger.)
Well, I know that argument. I'm told this frequently and Unix developers
are then astonished, when I tell them that post mortem debugging is
built in the OS for years (at least in all Windows NT operating systems).
It's Windows Error Reporting, former Dr. Watson., which takes a snapshot
and optionally sends the dump to a server to Microsoft.
Normally such dumps are not saved (if there are no OS specific
informations about the crash). A company can register it's applications
and download crash information from a Microsoft server.
But the "more professional" users surely don't like information to be
sent to a server, so for example I've implemented my own crash handler
in our application.
With this crash handler we are able to send information to our servers
or optionally
get a live debugging dump (same as the crash dump).
This is quite handy to debug deadlocks (where no crash dump is written).
It's even possible to connect with Visual Studio directly to our
applications and directly debug the snapshot in the IDE. (if we are
allowed too, since it's disabled by default, and know the password for
the system)
Debuggers are linked with the build chain tool set.
Yes, but there are multiple debuggers.
If you like GDB, then you perhaps like the (free) Microsoft Windows
Debugger for debugging Windows VStudio compiled applications, since IMHO
it's comparable with GDB (though it's too using Windows, but is more
command line centric)
Gdb is
available under Windows, but it isn't effective for debugging
programs compiled using VS.
I didn't use GDB for Windows that much. But I think it doesn't support
PDB debugging file format, so I agree it's you can't professionally
debug Windows applications compiled with VStudio with GDB.
But I think the reason for that is that there's no standard (no one
which is used for all operating systems) for C++ ABI and debugging
information.
And you get a completely new window, hogging up screen space, so
You have different options:
- Hover with the mouse pointer over the variable: Output is displayed
in a small popup
- Add watch: Variable will be added to a >single< watch window
- Add quick watch: Opens a new window (as you described)
- Pin to source: Add a small watch window directly in the source
(which I find quite cool - since the information is only displayed
when and where needed)
- Use the "command line immediate window" and enter
? variable
to get the value.
you have to dock it and resize it very small (since all your
interested in is one variable).
It's the option "add quick watch" which opens such a Window. I don't
like this option too and I prefer the other ones, I listed above.
Just type in "disp<expr>" under gdb. For any arbitrary
expression. "disp " is less keystrokes than you need mouse
clicks to open a watch window, and you don't even have to take
your hands off the keyboard.
Not in the configuration I'm using. But both in VS and gdb, you
can configure it to do so, using plugins (VS) or scripts (gdb).
My version I'm using (2008/2010) is displaying STL objects expanded
nicely by default.
I currently develop mainly under Windows, and I regret having to
use an IDE for some things. It slows me down considerably.
The new tool chain, VC 2010, is based on MSBuild completely. So using a
text editor and Windows Debugger command line based developing should be
possible too (with all compilers).
But since this is not main stream (as under Unix) I don't think it's a
good way to go.
Andre