Я хотел дать перфоманс для профайла некоторых программ после того, как увидел this разговор от CppCon 2015. Я загрузил ту же самую тестовую библиотеку Google, которую парень использует в разговоре, скомпилировал мою программу с соответствующими переключателями , связал его с ним, затем использовал perf для записи прогона. Вариант отчета дает мне это:Perf показывает измененные имена функций
Как вы можете видеть имена функций не очень читаемые. Я предполагаю, что это связано с изменением имени C++. Интересно, что все имена функций отображались правильно в видео для парня, который дал разговор, но не для меня. Я не думаю, что это случай полного отсутствия информации о символах, потому что в этом случае я буду видеть адреса памяти. По какой-то причине перфомант не может «отменить» имя C++ для меня, и это разочаровывает.
Я использую GCC (г ++) версии 5.2.1, парфюм является версия 4.2.6, и я использую эти переключатели при компиляции:
-I<my own include path> -L<path to the benchmark library> -O3 -std=c++14 -gdwarf-2 -fno-rtti -Wall -pedantic -lbenchmark -pthread
Причина, почему я не использую -fno-omit-frame-pointer
заключается в том, что вместо этого я использую параметр -gdwarf-2
, который оставляет информацию об отладке в исполняемом карлике, что является альтернативой для оставления указателя фрейма в этом случае. Это также означает, что я пропускаю --call-graph "dwarf"
до perf record
. Во всяком случае, я также попробовал метод указателя рамки, и он дает те же результаты, поэтому это не имеет значения.
Итак, почему в этом случае перфорация «отменяет» имя C++? Имеет ли это какое-либо отношение к использованию GCC, что, конечно, означает, что я использую libstdC++?
Я использую Arch Linux и 'perf report' показывает правильную демонтацию символов. Страница man для perf также показывает, что есть опция '--demangle', которая включена по умолчанию. Поскольку я не вижу того же поведения, что и у вас, у меня нет ответа, но то, что вы видите, не ожидается по умолчанию. –
Я также попытался добавить этот переключатель вручную, но ничего не изменил – adam10603
@GabrielSouthern Вы используете gcc? – adam10603