Как я могу использовать ftrace для получения графа вызовов в ядре, вызываемого системным вызовом? - PullRequest
1 голос
/ 09 апреля 2011

Я пробовал это, но все они выдают "пустые" выходные файлы:

trace-cmd record -p function_graph -g munmap -F ls
trace-cmd record -p function_graph -g sys_enter_munmap -F ls
trace-cmd record -p function_graph -g sys_enter -F ls

1 Ответ

2 голосов
/ 22 мая 2011

Сначала вам нужно правильно указать имя функции - например, имя функции для трассировки open syscalls равно sys_open.

Чтобы сделать это "правильным" способом, необходимо иметь function_graph поддержка в ядре.На архитектуре x86 это зависит от того, отключен ли CC_OPTIMIZE_FOR_SIZE , а на x86_64 - нет.

В моем случае я не удосужился скомпилировать собственное ядро ​​для отключения CC_OPTIMIZE_FOR_SIZE, я простосделал

trace-cmd record -p function --func-stack

и включил различные функции, которые выглядели так, как будто их можно вызывать, добавив несколько опций -l.Этого было достаточно, чтобы понять, что я хотел знать.

...