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

Mik*_*ebb 30 c++ windows debugging gdb mingw

我已经找到了关于这方面的文档,一无所获.我安装了MinGW,效果很好.我只是不知道如何使用调试器.

给出一些简单的代码,比如名为"mycode.cpp"的文件:

int main()
{
    int temp = 0;

    for (int i = 0; i < 5; ++i)
        temp += i;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

...我该怎么调试呢 我在Windows中使用MinGW和GDB调试代码的命令是什么?我可以像在Visual Studio中那样通过命令行单步执行代码吗?如果是这样,我用什么命令来做到这一点?

有没有关于在那里使用GDB的教程?我找不到任何东西,但是如果有人能指引我去做一件很棒的话.我厌倦了编写大量的std::cout语句来调试复杂的代码.

Dan*_*ien 43

第一步是编译程序,-g在可执行文件中包含调试信息:

g++ -g -o myprog.exe mycode.cpp
Run Code Online (Sandbox Code Playgroud)

然后程序可以加载到gdb:

gdb myprog.exe
Run Code Online (Sandbox Code Playgroud)

一些命令可以帮助您入门:

  • 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用户手册.

  • 还有一些你应该熟悉的命令:`run`,`continue`,`next`,`list`和`help`.当其他所有方法都失败时,请尝试使用`help`. (2认同)

Mar*_*ett 5

在这个问题Windows版本的GDB前端DDD中有一些gdb guis for windows

虽然DDD尚未移植