对于使用Cygwin GCC编译的C++程序,是否有免费的内存调试器
Is there a free memory debugger for C++ programs compiled with Cygwin GCC?
我正在尝试调试一个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,您只需:
-
将这两个文件(memwatch.h和memwatch.c或memwatch.cpp)放入与要编译和测试的源代码相同的目录中。
-
在源代码的每个.c或.cpp文件中,您将以下三行放在顶部:
#include "memwatch.h" #define MW_STDIO #define MEMWATCH
-
编译并运行你的程序,当你试图跟随一个未初始化的指针时,它会导致你的程序失败(相当大声),如果程序成功完成,它会写一个名为memwatch.log的文件,其中包含源代码中的任何内存泄漏,以及在代码中分配每一块被侵犯内存的行
注意:这就是在C中的操作方式(我认为C++也是如此)。
你知道你有一个未初始化的指针,如果当你打印出指针时,它等于一些值,比如0xFEFEFEFEFE(一开始我花了几个小时才弄清楚)
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在c++中检查长方体是否尽可能快地重叠(无迭代)
- 对于使用Cygwin GCC编译的C++程序,是否有免费的内存调试器
- 这是否可以减少免费模板函数的编译时间
- C++11标准和免费草案N3337之间的章节编号是否不同
- 是否有免费的 C++ xsl-fo 到 PDF 引擎
- 是否有一个开源的免费工具为MS Visual c++ Express构建使用gcc