0

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

我运行 Windows,我没有 Visual Studio,并且我不想尝试找出如何在另一个命令提示符中为诸如 Dr. Memory 之类的调试器编译我的程序。

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

如果我需要添加一些东西,我会编辑。

4

1 回答 1

1

您还可以使用 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++ 相同)。

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

于 2012-09-27T22:48:09.850 回答