我只是不能理解调试器和探测工具的概念。
如何在运行中的内核模块或用户空间应用程序中插入调试printk语句--使用Kprobe和Uprobe。使用什么术语来定义Kprobe和Uprobe在内存方面的行为--如何在程序运行状态下扩展地址空间。
发布于 2021-01-17 21:41:30
通常有一些单字节指令会导致断点(软件中断),然后处理器中也会有一些调试寄存器。
有了这些,就可以在内存中的任何地方插入一个跳转到内核陷阱处理程序的陷阱,而无需扩展任何“内存空间”-您只需设置调试寄存器或将断点处的所需指令替换为该陷阱指令。
在内核陷阱处理程序中,内核将知道故障发生的确切地址,并因此检查寄存器的状态等。在单字节指令的陷阱情况下,您可以用原始指令替换陷阱指令;可能使用处理器技巧来单步执行它;然后再次替换为陷阱指令……
https://stackoverflow.com/questions/65760819
复制相似问题