Нет такой точки следа.Очевидно, вы не можете отследить это простым способом.Похоже, что эта функция была встроена компилятором (имейте в виду, что функция также может быть опущена по некоторым причинам оптимизации).Вот почему в /proc/kallsyms
.
отсутствует его символ. Вы можете выбрать наиболее подходящую функцию для отслеживания.Например, в моем Debian с ядром 4.9 я могу отследить unmap_page_range()
, который в конечном итоге «вызывает» нужную вам функцию.Возможно, это логично будет соответствовать вашей цели.
Другой способ - это немного взломать.Вы можете сделать что-то вроде objdump -dS memory.o | vim -
(у вас должны быть двоичные файлы) и выяснить, где код, который вам нужен.Учитывая, что цепь zap_pud_range()
-> zap_pmd_range()
-> zap_pte_range()
, вероятно, встроена, вам придется исследовать вышеупомянутое unmap_page_range()
.Возможно, вы наконец-то получите кодовый адрес для kprobes .
Если вы хотите явно проследить zap_pte_range()
, например, через jprobes (оargs) или kretprobes (о возвращаемом значении), вы можете попытаться указать noinline
-атрибут для необходимых функций, перекомпилировать ядро Linux и отследить его как хотите.
Думаю, у меня больше нет для вас полезных способов.
Дополнительная информация: Связанный пост , Пример Jprobes , Ftrace: отслеживание вашего ядрафункции! , Пост о ftrace и systemtap , man nm