如何在Windows中使用MinGW gdb调试器调试C ++程序? [英] How do I use the MinGW gdb debugger to debug a C++ program in Windows?
问题描述
我已经找到了这个文件,没有发现任何内容。我已经安装MinGW,它的效果很好。我只是不知道如何使用调试器。
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.
给出一些简单的代码,在一个名为mycode.cpp的文件中说:
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;
}
...我如何调试这个。在Windows中使用MinGW和GDB调试代码的命令是什么?我可以通过Visual Studio中的命令行来遍历代码吗?如果是这样,我使用什么命令?
...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?
有没有使用GDB的教程?我找不到任何东西,但是如果有人可以指导我,那也是伟大的。我厌倦了大量的 std :: cout
语句来调试复杂的代码。
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.
推荐答案
第一步是使用 -g
编译您的程序,以便在可执行文件中包含调试信息:
The first step is to compile your program with -g
to include debugging information within the executable:
g++ -g -o myprog.exe mycode.cpp
然后该程序可以加载到 gdb
中:
Then the program can be loaded into gdb
:
gdb myprog.exe
有几个命令让您开始:
-
break main
将导致调试器中断。您还可以使用break FILENAME:LINENO
打破代码行。例如,当$ code> mycode.cpp 的第4行时,break mycode.cpp:4
li>
-
开始
启动程序。在您的情况下,您需要在启动程序之前设置断点,因为它会很快退出。
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.
在断点处:
-
打印VARNAME
。这就是打印变量的值,无论是本地的,静态的还是全局的。例如,在for
循环中,您可以键入print temp
以打印出temp
变量 -
step
这相当于进入
-
next
或adv +1
提前到下一行(如过渡) 。您也可以前往特定文件的特定行,例如adv mycode.cpp:8
。 -
bt
打印回溯。这是一个堆栈跟踪,基本上是。 -
继续
完全像视觉调试器的继续操作。它导致程序执行继续,直到下一个断点或程序退出。
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.
最好的事情是 GDB用户手册。
这篇关于如何在Windows中使用MinGW gdb调试器调试C ++程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!