0

我看到了这个页面,发现我们可以使用 dbx 检查程序的内存泄漏。我实际上从未这样做过,但检查内存泄漏似乎是一个不错的选择。

我曾经在没有 GUI 的 HPUX 和 IBM AIX UNIX 操作系统上工作,并且总是在命令行上工作。rtcaudit.so 库(用于运行时检查)由 Sun 提供。这是否意味着该库仅在 sun solaris 上可用?

你可能会告诉我为什么我不能自己尝试。但这里的问题是我目前不在 unix 上工作,而是在 windows 上工作。我只是想知道我们是否可以在 HPUX 或 IBM AIX 中使用相同的东西。

有人知道吗?请分享以防万一

4

2 回答 2

3
  • rtcaudit.soOracle Solaris Studio(以前称为 Sun Studio)的一部分。尽管有这个名字,它也可以在 Linux x86 上运行。因此,如果你有一个 Linux 机器,并且有一段时间你可能想在那里尝试一下。(在这种情况下,您可能想先尝试 Valgrind,请参阅 Scotts 的回答。)

  • 对于 HP,有Wildebeest Debugger (WDB)(修改后的 gdb)。WDB 有自己的扩展来查找内存泄漏。虽然这些与 Suns dbx 不同,但您仍可能想尝试一下。

  • 如果您使用的是 Visual Studio,它确实提供了一些查找内存泄漏的支持。请参阅Memory Leak Detection and IsolationMSDN。

  • 有一些免费的库可以捕获此类错误。对于 Windows,例如DUMAElectric FenceVisual Leak Detector. (无法发布链接,因为我没有足够的声望点。)

PS:如果我遇到这样的问题,我首先尝试的是 Valgrind(参见 Scotts 的回答)。它不需要任何交互,而只是吐出许多有用的信息。虽然它不是一个完整的调试器,但很多时候它提供了足够的提示来修复错误。强烈推荐!虽然不能在 Windows 上运行。

您可能想在 stackoverflow.com 上查看这个问题、这个问题和这个问题。

于 2011-03-29T12:45:32.300 回答
3

Valgrind是一个开源替代方案。这不仅可以检测内存泄漏,还可以检测其他类型的内存错误和一堆我从未使用过的其他东西。它目前仅在 Linux、MacOS、FreeBSD 和 NetBSD 上运行,但如果您的程序不依赖于平台,那么您可以在一个平台上进行开发和调试,然后再在目标平台上运行它。

于 2011-03-30T22:49:37.467 回答