1

如果可以的话请帮忙。我需要调试对内核模块抛出机制中某些变量的访问,允许每次在需要访问时打印堆栈。我知道最简单的方法是使用硬件断点(也称为观察点),https://github.com/torvalds/linux/blob/master/kernel/events/hw_breakpoint.c使用处理器调试寄存器,写入它监控地址,并可以生成中断,可以通过回调函数处理你需要的一切。

但不幸的是,在我的项目中使用的是旧版本的 linux 内核,然后添加了这个功能。所以由于项目限制,我无法升级项目内核。我发现,在内核可用的 watch.c 中: https ://github.com/torvalds/linux/blob/master/arch/mips/kernel/watch.c 这个函数是否提供类似的功能,比如硬件断点,或者没有? 我找不到此功能的文档。

我需要这个的根本原因是有人在内核模块中间接破坏了指向内存的指针,结果是“未对齐的内存访问内核崩溃”。所以也许提出了一些另一种调试技术,可以帮助找到代码的一部分,这样做,作为断点(观察点)的替代品?非常感谢您提供任何有用的信息。

4

0 回答 0