Столбец «символ» показывает адрес вместо имени функции - PullRequest
0 голосов
/ 18 октября 2018

Вот моя системная информация.

$ uname -a
Linux pjchiou-X550JX 4.16.0-041600-generic #201804012230 SMP Sun Apr 1 22:31:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Я использую очень простую C-программу для проверки perf.

#include <stdio.h>
#include <stdlib.h>

void myloop()
{
    for (int i = 0; i < 100000; i++)
        printf("%d", i);
}

int main(void)
{
    myloop();
    return (0);
}

Скомпилировано с:

gcc -g -o test test.c

А затем собрать образец с:

perf record ./test

Наконец, показать отчет:

perf report

Но то, что я вижу в отчете, выглядит так:

# Overhead  Command  Shared Object      Symbol                      
# ........  .......  .................  ............................
#
 9.64%  test     libc-2.27.so       [.] 0x000000000005cb14
 6.17%  test     libc-2.27.so       [.] 0x000000000005bf8e
 5.75%  test     libc-2.27.so       [.] 0x000000000005885e
 5.61%  test     libc-2.27.so       [.] 0x000000000005886b
 5.33%  test     libc-2.27.so       [.] 0x00000000000587b0
 5.28%  test     libc-2.27.so       [.] 0x000000000005b6ff
 5.23%  test     [kernel.kallsyms]  [k] n_tty_write

Почему в столбце " символ " вместо имени функции отображается адрес?

  • gdb установлен.
  • libc6, libc6-dbg, libc6-установленное устройство.
  • Самое высокое разрешение доступа.

1 Ответ

0 голосов
/ 18 октября 2018

Установите символы отладки для libc, чтобы получить имена для библиотечных функций с помощью следующих команд.

sudo apt-get install libc6-dbg
sudo apt-get source libc6-dev
...