1

彼此之间是否有任何特殊用途/优势(kmemleak 和 kmemcheck)?我可以在 Android 操作系统(不是 Linux 操作系统)上启用这些工具吗?请指导我如何操作。

参考:https ://www.kernel.org/doc/Documentation/kmemcheck.txt https://www.kernel.org/doc/Documentation/kmemleak.txt

4

1 回答 1

5

Kmemleak 和 Kmemcheck 执行不同的任务,没有一个比另一个更好。

1. Kmemleak 检查是否有一些内存块被内核分配但未被释放(即检查内核中的内存泄漏,因此得名)。性能开销通常是可以接受的。

2. Kmemcheck 检查是否有内核代码访问了未初始化的内存。示例:内核代码分配一个结构,没有用值填充它,然后从该结构中读取一些东西。Kmemcheck 应该检测到这一点。

顺便说一句,Kmemcheck 不检查内存泄漏。

Kmemcheck 通常会大大降低系统速度,以至于无法使用图形环境。引导过程也可能变得非常缓慢(并且可能失败)。

3. 如果我没记错的话,Kmemleak 至少适用于 x86 和 ARM。Kmemcheck 仅适用于 x86。

4. 不幸的是,我不能说如何在 Android 上启用 Kmemleak,我只在桌面 Linux 系统上使用过它。

5. 根据您要完成的工作,可能会有更适合您需求的工具。例如,Linux 内核具有多种可以启用和内置的调试功能。同样,我在这方面没有使用 Android 内核的经验。

于 2013-12-26T06:17:47.163 回答