对于使用Cygwin GCC编译的C++程序,是否有免费的内存调试器

Is there a free memory debugger for C++ programs compiled with Cygwin GCC?

本文关键字:是否 免费 调试器 内存 C++ Cygwin 于使用 GCC 编译 程序      更新时间:2023-10-16

我正在尝试调试一个C++自定义类,该类涉及分配给我在Cygwin GCC/G++中编写和编译的堆的内存。如果我运行测试程序,它不会明确地给我一个segfault,但在程序结束时,它会说"Aborted(core dumped)"。我似乎也无法编写一个测试程序来给我一个可以在Cygwin GDB中找到的segfault。因此,我正在寻找一个内存调试器,希望它能有所帮助。

我运行的是Windows,我没有Visual Studio,我不想尝试在另一个命令提示符下为像Dr.Memory这样的调试器编译我的程序。

我可以使用哪个内存调试器?

如果需要添加内容,我将进行编辑。

您还可以使用memwatch(一种支持C++的C内存调试器)。

http://www.linkdata.se/sourcecode/memwatch/

编辑:要使用memwatch,您只需:

  1. 将这两个文件(memwatch.h和memwatch.c或memwatch.cpp)放入与要编译和测试的源代码相同的目录中。

  2. 在源代码的每个.c或.cpp文件中,您将以下三行放在顶部:

    #include "memwatch.h"
    #define MW_STDIO
    #define MEMWATCH
    
  3. 编译并运行你的程序,当你试图跟随一个未初始化的指针时,它会导致你的程序失败(相当大声),如果程序成功完成,它会写一个名为memwatch.log的文件,其中包含源代码中的任何内存泄漏,以及在代码中分配每一块被侵犯内存的行

注意:这就是在C中的操作方式(我认为C++也是如此)。

你知道你有一个未初始化的指针,如果当你打印出指针时,它等于一些值,比如0xFEFEFEFEFE(一开始我花了几个小时才弄清楚)