Jeprof застрял при работе с файлами кучиC++

Программы на C++. Форум разработчиков
Anonymous
Jeprof застрял при работе с файлами кучи

Сообщение Anonymous »

Я хочу профилировать распределение памяти моей программы. Поэтому я компилирую с JEMALLOC_PROF=1 и JEMALLOC_PROF_LIBUNWIND=1 и запускаю с экспортом MALLOC_CONF="prof:true,prof_active:true,lg_prof_interval:25".
Программа сбросила несколько файлов кучи. Однако я обнаружил, что не могу использовать jeprof для анализа этого файла. Если я запущу следующую команду, jeprof застрянет со следующими сообщениями об ошибках.

Код: Выделить всё

./jeprof --svg bin/tiflash/tiflash jeprof.910766.14.i14.heap > t.svg
Using local file bin/tiflash/tiflash.
Using local file jeprof.910766.14.i14.heap.
addr2line: DWARF error: could not find variable specification at offset 6cbe
addr2line: DWARF error: could not find variable specification at offset 3cec
addr2line: DWARF error: could not find variable specification at offset 1b26
addr2line: DWARF error: could not find variable specification at offset 372c
addr2line: DWARF error: could not find variable specification at offset 6fd6
addr2line: DWARF error: invalid or unhandled FORM value: 0x25
После некоторого поиска я обнаружил ошибку DWARF: не удалось найти спецификацию переменной по смещению 6cbe. означает, что какой-то символ отсутствует, поэтому jeprof не может справиться. Однако программа не имеет отношения к зависанию.
Из https://github.com/jemalloc/jemalloc/issues/2417 я знаю ошибку DWARF: недопустимая или необработанная форма. значение: 0x25 связано с некоторой проблемой DWARF. Никаких дополнительных подсказок, однако.
Я хочу знать, как решить эту проблему, и позвольте jeprof вывести SVG.
==== EDIT = ===
После дальнейшего расследования я обнаружил, что jeprof вызвал команду

Код: Выделить всё

addr2line -f -C -e xxx -i 

Подробнее здесь: [url]https://stackoverflow.com/questions/78710744/jeprof-got-stuck-when-handling-dumped-heap-files[/url]

Вернуться в «C++»