How do I use the MinGW gdb debugger to debug a C++ program in Windows?
Solution 1
The first step is to compile your program with -g
to include debugging information within the executable:
g++ -g -o myprog.exe mycode.cpp
Then the program can be loaded into gdb
:
gdb myprog.exe
A few commands to get you started:
-
break main
will cause the debugger to break whenmain
is called. You can also break on lines of code withbreak FILENAME:LINENO
. For example,break mycode.cpp:4
breaks execution whenever the program reaches line 4 ofmycode.cpp
. -
start
starts the program. In your case, you need to set breakpoints before starting the program because it exits quickly.
At a breakpoint:
-
print VARNAME
. That's how you print values of variables, whether local, static, or global. For example, at thefor
loop, you can typeprint temp
to print out the value of thetemp
variable. -
step
This is equivalent to "step into". -
next
oradv +1
Advance to the next line (like "step over"). You can also advance to a specific line of a specific file with, for example,adv mycode.cpp:8
. -
bt
Print a backtrace. This is a stack trace, essentially. -
continue
Exactly like a "continue" operation of a visual debugger. It causes the program execution to continue until the next break point or the program exits.
The best thing to read is the GDB users' manual.
Solution 2
There are a few gdb guis for windows in this question windows version of the GDB frontend DDD
Although DDD hasn't been ported
Mike Webb
I am a full time software developer working for BizStream. I love what I do and am always excited for new and interesting projects. I love my wife, my kids, my life, helping and hanging out with others, and working for Jesus Christ as He has called me.
Updated on August 07, 2020Comments
-
Mike Webb almost 4 years
I have looked for documentation on this and found nothing. I have MinGW installed and it works great. I just don't know how to use the debugger.
Given some simple code, say in a file called "mycode.cpp":
int main() { int temp = 0; for (int i = 0; i < 5; ++i) temp += i; return 0; }
...how would I debug this. What are the commands that I use to debug code with MinGW and GDB in windows? Can I step through the code via the command line like in Visual Studio? If so what commands do I use to do that?
Are there any tutorials for using GDB out there? I couldn't find any, but if anyone could direct me to one that would be great too. I'm tired of writing tons of
std::cout
statements to debug complex code.