如何使用MinGW gdb调试器在Windows中调试C ++程序?

时间:2011-01-12 17:30:31

标签: c++ windows debugging gdb mingw

我已经找到了关于此的文档但没有发现任何内容。我安装了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语句来调试复杂的代码。

2 个答案:

答案 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这相当于“踏入”。
  • nextadv +1前进到下一行(例如“跳过”)。您还可以使用例如adv mycode.cpp:8
  • 前进到特定文件的特定行
  • bt打印回溯。这本质上是一个堆栈跟踪。
  • continue完全类似于可视调试器的“继续”操作。它会导致程序执行继续,直到下一个断点或程序退出。

最好看的是GDB users' manual

答案 1 :(得分:5)

在这个问题windows version of the GDB frontend DDD

中,有几个gdb guis for windows

虽然DDD尚未被移植