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

标签 c++ windows debugging cygwin segmentation-fault

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

我运行的是 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++ 相同)。

如果当您打印出指针时,它等于某个值,例如 0xFEFEFEFEFEFEFEFE,那么您就知道您有一个未初始化的指针(一开始我花了几个小时才弄明白)

关于c++ - 是否有用于使用 Cygwin GCC 编译的 C++ 程序的免费内存调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12631141/

相关文章:

c++ - DirectInput 未解析的外部符号

windows - 用于删除早于 X 天的文件的批处理脚本(基于创建日期,而不是修改日期)

windows - Qt Creator 如何安装插件?

java - 在 ANTLR 4 生成的解析器中为 Java 类创建命令行别名

c++ - 在 VC++2010 环境之外运行时程序立即崩溃

python - R 和 Python 的输出值不同?

perl - 使用 Fcntl : Baffling bug involving 'use' and 'require' 锁定文件

c++ - 找一本关于 windows C++ GUI 编程的书

c++ - HTTP POST 的延迟来自哪里?

c++ - 为什么当我在 cpp 的初始化中指定多维数组时必须有边界