你能为linux推荐一个好的调试malloc库吗?我知道有很多选择,我只需要知道人们正在使用哪些图书馆来解决现实问题。
谢谢!
编辑:我知道Valgrind,但有时表现实在太低了。答案 0 :(得分:5)
Valgrind。 :-)它不是一个malloc库,但它非常擅长查找内存管理和内存使用错误。
答案 1 :(得分:5)
http://valgrind.org/用于查找内存泄漏和堆损坏。
http://dmalloc.com/用于通用堆调试。
答案 2 :(得分:2)
GNU C库本身有一些调试功能和钩子,您可以使用它们来添加自己的。
有关Linux系统的文档,请键入info libc
,然后g Heap<TAB>
。另一个有用的信息节点是“Hooks for Malloc”,您可以使用g Hooks<TAB>
答案 3 :(得分:1)
这可能对您没有用,但您可以编写自己的malloc包装器。在我们特殊的“诊断”构建中,它保留了一个包含所有未完成分配的表(包括发生分配的文件名和行号),并打印出在退出时仍未完成的任何内容。它还使用canary words(检查缓冲区溢出)以及释放后和重新分配之前的内存重写和块校验和的组合(以检查free-after-free之后)。
如果您的产品足够大,那么必须找到 - 替换您的整个来源可能会很烦人,希望能够做到最好。此外,您自己的malloc包装器的开发时间可能不容忽视。像我上面提到的那样做很多重量级的东西也可能无法解决你的速度问题。编写自己的包装器可以提供最大的灵活性。
答案 4 :(得分:1)