Не удается увидеть символы ядра в «отчете о работе» при попытке отследить зонд в CentOS 7.7 - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь увидеть, какой код ядра вызывает специфическую c функцию в CentOS 7.7 (x86-64). Я пробовал это:

perf probe -a vsnprintf
perf record -e probe:vsnprintf -aR sleep 10

Затем, когда я пытаюсь:

perf report --stdio

Я вижу только несколько шестнадцатеричных чисел в выводе вместо имен функций:

# Total Lost Samples: 0
#
# Samples: 331  of event 'probe:vsnprintf'
# Event count (approx.): 331
#
# Children      Self  Trace output      
# ........  ........  ..................
#
   100.00%   100.00%  (ffffffffaf58c750)
            |          
            |--56.19%--0
            |          __GI___libc_read
            |          0xffffffffaf98bede
            |          0xffffffffaf4493bf
            |          0xffffffffaf4484ff
            |          0xffffffffaf4c09b0

Версия ядра (я работаю внутри виртуальной машины на KVM):

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Я выбрал vsnprintf, потому что он часто отображается в «perf top» (символ ядра - там я правильно вижу символы).

Есть ли способ увидеть реальные имена функций?

1 Ответ

2 голосов
/ 25 марта 2020

Perf в RHEL 7.7 имеет ошибку, которая не позволяет ему сообщать символы ядра: https://access.redhat.com/solutions/4797281

Я сильно подозреваю, что в CentOS 7.7 точно такая же ошибка. После обходного решения, предложенного на странице выше, я снизил версию perf до версии в CentOS 7.6, и похоже, что она работает:

# give access to packages from 7.6
yum-config-manager --add-repo=http://vault.centos.org/centos/7.6.1810/updates/x86_64/

# reinstall older perf
yum remove perf
yum install perf-3.10.0-957.1.3.el7

# optional: disable the vault repo
yum-config-manager --disable vault.centos.org_centos_7.6.1810_updates_x86_64_

# test that it now works
perf record -a -g -- sleep 3
perf report --stdio
# looks good!
...