【发布时间】:2011-01-24 03:26:22
【问题描述】:
你能推荐一个好的 linux 调试 malloc 库吗?我知道有很多选择,我只需要知道人们实际使用哪些库来解决现实生活中的问题。
谢谢!
编辑:我知道 Valgrind,但有时性能真的太低了。
【问题讨论】:
你能推荐一个好的 linux 调试 malloc 库吗?我知道有很多选择,我只需要知道人们实际使用哪些库来解决现实生活中的问题。
谢谢!
编辑:我知道 Valgrind,但有时性能真的太低了。
【问题讨论】:
gcc 现在带有比 valgrind 快得多的消毒剂。您可以在 -fsanitize 下检查不同的编译器选项。更多信息here
【讨论】:
GNU C 库本身具有一些调试功能和钩子,您可以使用它们添加自己的。
有关 Linux 系统类型的文档,请输入 info libc 和 g Heap<TAB>。另一个有用的信息节点是“Hooks for Malloc”,您可以通过g Hooks<TAB> 到达那里
这对您可能不是很有用,但您可以编写自己的 malloc 包装器。在我们特殊的“诊断”构建中,它保留了所有未完成分配的表(包括发生分配的文件名和行号),并打印出在退出时仍然未完成的任何内容。它还使用金丝雀字(检查缓冲区溢出)以及在空闲之后和重新分配之前内存重写和块校验和的组合(检查释放后使用)。
如果您的产品足够大,可能会很烦人,不得不寻找并替换您的整个来源,并希望获得最好的结果。此外,您自己的 malloc 包装器的开发时间可能不可忽略。像我上面提到的那样做很多重量级的事情可能也不会帮助你解决速度问题。不过,编写自己的包装器会带来最大的灵活性。
【讨论】:
http://valgrind.org/ 用于查找内存泄漏和堆损坏。
http://dmalloc.com/ 用于通用堆调试。
【讨论】:
Valgrind。 :-) 它不是 malloc 库,但是,它非常擅长查找内存管理和内存使用错误。
【讨论】: