我正在寻找Valgrind来帮助提高我的C编码/调试,当我发现它只适用于Linux时——我没有其他需要或兴趣将我的操作系统转移到Linux,所以我想知道是否有同样好的Windows程序。
当前回答
我曾经有机会使用Compuware DevPartner Studio,那真的很好,但它相当昂贵。 一个更便宜的解决方案可以是GlowCode,我刚刚与一个5。X版本,尽管在附加到我需要调试的进程时出现了一些问题,但它运行得很好。
其他回答
您可能想了解Mozilla在内存泄漏方面所做的工作。他们工具箱中的一个工具是用作内存泄漏检测器的Hans Boehm垃圾收集器。
请参阅软件QA测试和测试工具资源页面上的“源测试工具”链接,以获得类似工具的列表。
我曾经使用BoundsChecker,DevPartner Studio和Intel V-Tune进行分析。我最喜欢V-Tune;你可以模拟各种英特尔芯片组,它会给你关于如何优化该平台的提示。
您可以尝试RuntimeChecker试用版或者IBM Purify试用版。
一个免费的解决方案是在Visual Studio中使用以下代码:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
只要把这个写在所有cpp文件的顶部。 这将在停止调试运行时检测应用程序的内存泄漏,并在输出窗口中列出它们。双击内存泄漏行将突出显示已分配内存且从未释放内存的行。这可能对你有帮助:http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
一些好的商业工具:
净化 确保+ +
绝对净化!我用它来分析一些大型代码库(>3,000 kSLOC),发现它非常出色。
你可能想在维基百科上看看这个列表。
顺便说一下,我发现memwatch很有用。谢谢约翰!
推荐文章
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- GIT克隆在windows中跨本地文件系统回购
- C“int”的大小是2字节还是4字节?
- 多维数组如何在内存中格式化?
- printf()和puts()在C语言中的区别是什么?
- 断言是邪恶的吗?
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 有效,但毫无价值的语法在开关情况下?
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 如何在Visual Studio中找到堆栈跟踪?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- gcc在哪里查找C和c++头文件?
- Windows和Linux上的c++编译:ifdef开关