最新发现linux有个巨好用的工具--kprobes.几乎可以在任何指令上probe,这样对kernel的性能分析和调试都有很大的帮助。关键这和bdi3000这样的调试工具相比可以不需要中断cpu操作,代价是多些指令消耗。
在读kprobes源码的时候又研究了下debugfs接口,这也是个在用户态下观察内核信息的好方法。debugfs从名称上看是个文件系统,里面的接口是文件的file operations. 使用debugfs_create_file将file operations同debugfs特定文件链接起来。使用seq file接口来管理file operations时,仅需要定制file_open接口,这里引入一个 seq_operations 结构。
debugfs, procfs一度让我十分迷惑,二者功能上如功类似,为什么这个关键的特性都会在内核里存在呢?IBM documents 中的这篇文章给我了答案:[[