是否有一种方法可以了解在某个事件期间调用了哪些内核函数。
例如,如果我按下键盘上的任何键,我想知道在调用字符(与我在键盘上键入的键相对应的字符)出现在屏幕上之前,所有内核函数和设备驱动程序函数将被调用什么。
我想将完整的流程转储到某个地方,以后再检查。我说的是内核空间函数-不是用户空间函数。
显然,跟踪的完整性取决于它从何处开始。这取决于您。我想知道正在调用什么[[所有内核功能和设备驱动程序功能]
您可以通过方便的trace-cmd
来查找所需内容。例如。您可以获取功能图。首先,您需要根据需要确定一些切入点。如果是关于按键盘的操作,则需要找到其驱动程序和与其相关的一些功能。
示例:经典AT和PS / 2键盘驱动程序trace-cmd
具有中断功能atkbd
。让我们检查是否存在这样的跟踪点:
atkbd
然后开始录制:
按某些键并停止录音:先按atkbd_interrupt
,然后按trace-cmd list -f | grep atkbd_int
。现在您可以获得功能图:
trace-cmd record -p function_graph -g atkbd_interrupt &
将会是这样:
fg
例如,只是一点点痕迹。我在我的qemu VM中做到了。