【问题标题】:Need a tool to detect memory leaks in C code需要一个工具来检测 C 代码中的内存泄漏
【发布时间】:2011-01-29 09:19:33
【问题描述】:

是否有一个很好的应用程序(具有某种 gui)来测试 c 代码中的内存泄漏。我真的很想测试我的作业/程序,但是对此很陌生,我很难使用终端来做事,尤其是使用 gdb 进行调试(对我来说,这感觉就像过去的爆炸,我可以使用一些可视化调试器)。

感谢您的帮助

编辑:平台无关紧要 - 我正在运行一切;)

【问题讨论】:

  • “我正在运行一切” - 哇,一下子!?凉爽的! ;-)
  • 好吧,不管你喜欢与否,我建议你熟悉命令行。当我开始编程时,我是一个 Windows 书呆子,一个 Linux 的仇恨者,并且拒绝使用它。但我不得不这样做,一旦我掌握了基础知识,我真的很感激使用它。今天我只使用 Windows 玩游戏 ;-)。

标签: c debugging memory-management memory-leaks


【解决方案1】:

取决于平台(你没有提到它)Valgrind 在 Linux 系统上非常棒。它没有 GUI,但也不需要。

只需运行valgrind <path to your application + arguments>,它就会运行您的应用程序并在内存操作期间吐出任何错误。

valgrind 之后添加--leak-check=full--show-reachable=yes 选项以获得内存泄漏源的堆栈跟踪。

【讨论】:

  • “它没有图形用户界面,但不需要图形用户界面”——我不敢苟同,特别是因为 OP 特别承认对命令行感到不舒服。也就是说,valgrind 是我所知道的最好的工具。
  • 如果我不知道我想输入什么,我可以管理命令行,只要这些命令不征税。我在做很多终端工作时遇到了困难,但如果它的命令最少并且我可以读取输出,那么我猜应该没问题?
  • @sbsp:一旦你看到 val-grind 产生的那种细节,你就不会介意了。 :) (这太棒了。)
  • @ptomato - 我已经使用 Valgrind 大约 3 年了,我知道(并且需要)的唯一两个选项是我在回答中给出的两个选项。如果 OP 至少设法使用了 GDB(从它的声音来看,他们有),那么 Valgrind 将是小菜一碟。我实际上有时会使用 Valgrind 进行调试 :)
  • 如果您使用的是 Eclipse,那么可以使用 Linux 工具模块 (eclipse.org/linuxtools) 将 valgrind 集成到 IDE 中。
【解决方案2】:

Purify 是一个很好的应用程序。

【讨论】:

    【解决方案3】:

    有一个用于分析 valgrind 结果的 gui:http://alleyoop.sourceforge.net/。此外,还有(非免费)purify,这很棒,而且我相信有试用版。它有一个 GUI。


    【讨论】:

      【解决方案4】:

      在 Windows 上,HeapMon 可能会引起人们的兴趣,尽管它没有明确告诉您泄漏点在哪里。

      【讨论】:

        【解决方案5】:

        valgrind 在 Linux 上相当不错,但它只有命令行界面

        【讨论】:

          【解决方案6】:

          如果您使用的是 Microsoft 的 DevStudio,那么 C 运行时库已经内置了大量内存分配跟踪工具:

          The Debug Heap

          _CrtSetDbgFlag

          令我惊讶的是,似乎很少有程序员知道这些工具!

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-09-17
            • 2013-02-03
            • 2015-05-03
            • 2013-03-21
            • 2011-07-08
            • 1970-01-01
            • 2011-05-12
            相关资源
            最近更新 更多