Есть ли способ повторно использовать файлы подавления valgrind?

На моей работе мне нужно профилировать некоторое программное обеспечение и получить некоторые файлы подавления, которые были записаны неизвестным временем назад. Один из этих файлов (logging.supp) используется для подавления ошибок регистрации.

Я предполагаю, что регистрация и некоторые другие части изменяются между генерацией файла подавления и моим профилированием.

Насколько я понимаю, valgrind использует стек для определения необходимости устранения утечки.

Нужно ли восстанавливать файлы подавления или есть способ что-то изменить в файлах?

Пример записи подавления:

{
<insert_a_suppression_name_here>
Memcheck:Leak
fun:_Znwj
fun:_ZN3tsd6common5types8SmartPtrINS0_7logging19LogSimpleDateFormatEEaSEPS4_
fun:_ZN3tsd6common7logging23LogDatePatternConverterC1ESt6vectorISsSaISsEE
fun:_ZN3tsd6common7logging16LogPatternParser15createConverterEcSt6vectorISsSaISsEE
fun:_ZN3tsd6common7logging16LogPatternParser17finalizeConverterEcSsiSsNS0_5types8SmartPtrINS1_17LogFormattingInfoEEERSt6vectorINS4_INS1_19LogPatternConverterEEESaIS9_EERS7_IS6_SaIS6_EE
fun:_ZN3tsd6common7logging16LogPatternParser5parseESsRSt6vectorINS0_5types8SmartPtrINS1_19LogPatternConverterEEESaIS7_EERS3_INS5_INS1_17LogFormattingInfoEEESaISC_EE
fun:_ZN3tsd6common7logging16PatternLogLayout15activateOptionsEv
fun:_ZN3tsd6common7logging16PatternLogLayoutC1ERKSs
fun:_ZN3tsd6common7logging14LoggingManager4initENS0_5types8SmartPtrINS1_23LogManagerConfigurationEEE
fun:_ZN3tsd6common7logging14LoggingManager4initERKSsS4_
fun:_ZN3tsd6common7logging14LoggingManager9getLoggerERKSs
fun:_ZN3tsd6common7logging6LoggerC1ERKSs
}

Я нашел и понравился этот ответ:

https://stackoverflow.com/a/14781867/2764334

Могу ли я использовать точки также, чтобы игнорировать некоторые функции, которые являются записями промежуточного стека?

Как генерируются имена функций? для меня это выглядит как _Znjw или _ZN3tsd это имя для главного?

Можете ли вы помочь мне найти документацию по вышеуказанным вопросам?

2

Решение

Могу ли я использовать точки также, чтобы игнорировать некоторые функции, которые являются записями промежуточного стека?

Да.

Как генерируются имена функций?

Это искаженные имена функций, сгенерированные компилятором; они содержат пространство имен и / или область видимости, имя функции и аргументы. Ты можешь использовать c++filt разобрать их.

для меня это выглядит как _Znjw или _ZN3tsd это имя для главного?

_Znjw является operator new(unsigned), _ZN3tsd это префикс для вещей в namespace tsd,

Можете ли вы помочь мне найти документацию по вышеуказанным вопросам?

Файлы подавления Valgrind задокументированы Вот. Похоже, формат искажения GNU официально не задокументирован; используйте Google и возьмите все, что вы найдете, с небольшим количеством соли (при условии, что вы не хотите перемещаться по исходному коду компилятора, чтобы увидеть, как генерируются имена).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]