kmemleak和kmemcheck有什么区别?以及如何在Android操作系统上启用这些工具?

Moh*_*era 1 linux memory-leaks memory-management linux-kernel android-kernel

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

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

Eug*_*ene 5

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

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

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

顺便说一句,Kmemcheck没有检查内存泄漏.

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

如果我没弄错的话,Kmemleak至少可以用于x86和ARM.Kmemcheck仅限x86.

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

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