我正在寻找一种在Linux内核中检测函数的方法。似乎GCC的-finstrument-functions标志允许检测,但有没有办法只使用编译器指令(即函数属性)来检测特定的Linux函数,而不是检测所有函数?
似乎KProbe还具有仪器功能,但KProbe维护了一个黑名单功能,不允许监控这些功能,导致仪器范围有限。
我在x86_64上运行内核版本为4.8.11的Ubuntu-16.04。
检测的目的是通过设置和清除标志来监视目标函数的进入和退出。
答案 0 :(得分:0)
答案取决于它。然而,注入并不像人们想象的那么简单。
特别是,您可以对特定C文件使用-finstrument-functions,然后使用属性((no_instrument_function))排除您不想要检测的
的示例您必须跟踪抢占和快速呼叫,您必须确保不会意外停止或删除仪器。哦,你还必须跟踪内核自行造成的任何随机堆栈布局。