我已经找到了关于此的文档但没有发现任何内容。我安装了MinGW,效果很好。我只是不知道如何使用调试器。
给出一些简单的代码,比如名为“mycode.cpp”的文件:
int main()
{
int temp = 0;
for (int i = 0; i < 5; ++i)
temp += i;
return 0;
}
...我该如何调试呢。我在Windows中使用MinGW和GDB调试代码的命令是什么?我可以像在Visual Studio中那样通过命令行单步执行代码吗?如果是这样,我会用什么命令来做?
有没有关于在那里使用GDB的教程?我找不到任何东西,但是如果有人能指引我去做一件很棒的话。我厌倦了编写大量的std::cout
语句来调试复杂的代码。
答案 0 :(得分:41)
第一步是使用-g
编译程序,以在可执行文件中包含调试信息:
g++ -g -o myprog.exe mycode.cpp
然后程序可以加载到gdb
:
gdb myprog.exe
一些让你入门的命令:
break main
会在调用main
时导致调试器中断。您还可以使用break FILENAME:LINENO
分隔代码行。例如,只要程序到达break mycode.cpp:4
的第4行,mycode.cpp
就会中断执行。start
启动该程序。在您的情况下,您需要在启动程序之前设置断点,因为它会快速退出。在断点处:
print VARNAME
。这就是打印变量值的方式,无论是本地变量,静态变量还是全局变量。例如,在for
循环中,您可以键入print temp
以打印出temp
变量的值。step
这相当于“踏入”。next
或adv +1
前进到下一行(例如“跳过”)。您还可以使用例如adv mycode.cpp:8
。bt
打印回溯。这本质上是一个堆栈跟踪。continue
完全类似于可视调试器的“继续”操作。它会导致程序执行继续,直到下一个断点或程序退出。最好看的是GDB users' manual。
答案 1 :(得分:5)
在这个问题windows version of the GDB frontend DDD
中,有几个gdb guis for windows虽然DDD尚未被移植