2

如果Linux内核或驱动程序中存在缓冲区溢出等内存覆盖代码,则很难调试和查找根本原因。

我知道我可以启用 SLAB 调试来获取一些信息。如果释放后将某些内容写入slab内存,那么我们将看到警告。但是这种方法有局限性,有时我们仍然无法得到有用的线索。

有没有其他内核调试方法来检测内存被覆盖?

4

1 回答 1

3

看看Kmemcheck 工具。您可以在内核配置中启用它并重建内核。

Kmemcheck 可能会显着降低系统速度,但它可以检测到不正确的内存访问,否则很难找到。

对于 x86_64 架构上的内核 4.1 或更新版本,内核地址清理程序 (KASan)也可能是一个选项。它应该比 Kmemcheck 快得多。

于 2013-07-17T07:05:31.383 回答