Valgrind - Файл подавления слишком общий?

Я новичок в valgrind, и первое, что я заметил, было то, что стандартная библиотека C в OS X El Capitan, похоже, теряет память (возможно, потеряна). После небольшого прочтения это не так, и можно исключить системную библиотеку из сводки утечки valgrind с помощью файла подавления.

Я сгенерировал один такой файл подавления (запустив упрощенную программу) и добавив ошибки в файл подавления. Это выглядит так:

osx_el_capitan_c_lib.supp

{
  <osx_el_capitan_c_lib>
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc_zone_malloc
   fun:_objc_copyClassNamesForImage
   fun:_ZL9protocolsv
   fun:_Z9readClassP10objc_classbb
   fun:gc_init
   fun:_ZL33objc_initializeClassPair_internalP10objc_classPKcS0_S0_
   fun:layout_string_create
   fun:_ZL12realizeClassP10objc_class
   fun:_ZL22copySwiftV1MangledNamePKcb
   fun:_ZL22copySwiftV1MangledNamePKcb
   fun:_ZL22copySwiftV1MangledNamePKcb
   fun:_ZL22copySwiftV1MangledNamePKcb
}

Теперь у меня есть несколько вопросов:

  • Возможно ли, что этот файл будет подавлять утечки моего реального кода (не системных библиотек)? Я проверил немного с определенно утечкой / не утечкой кода, и, кажется, работает нормально. Но как я могу быть уверен?
  • Выходной ток по умолчанию выглядит следующим образом (определенно не протекает):

        == 37004 == Memcheck, детектор ошибок памяти
        ==37004== Copyright (C) 2002-2015 и GNU GPL'd, Джулиан Сьюард и соавт.
        ==37004== Использование Valgrind-3.11.0 и LibVEX; перезапустить с -h для получения информации об авторских правах
        == 37004 == Команда: ./val.o
        ==37004== 
        ==37004== 
        ==37004== РЕЗЮМЕ КАРТЫ:
        ==37004== используется на выходе: 22 100 байт в 187 блоках
        == 37004 == общее использование кучи: 271 выделение, 84 освобождения, выделение 28 340 байт
        == 37004 == 
        == 37004 == РЕЗЮМЕ УТЕЧКИ:
        ==37004== определенно потеряно: 0 байтов в 0 блоках
        == 37004 == косвенно потеряно: 0 байтов в 0 блоках
        == 37004 == возможно потеряно: 0 байтов в 0 блоках
        == 37004 == все еще достижимо: 0 байтов в 0 блоках
        == 37004 == подавлено: 22 100 байт в 187 блоках
        == 37004 == 
        == 37004 == Для подсчета обнаруженных и подавленных ошибок, перезапустите с: -v
        ==37004== РЕЗЮМЕ ОШИБОК: 0 ошибок из 0 контекстов (исключено: 18 из 18)
    
    
    Как вы можете видеть, файл подавления пока работает довольно хорошо (байты не отображаются как потерянные и т. Д.). Но на файл кучи не влияет файл подавления (allocs / mallocs показаны - они происходят за пределами моего кода), а сводная утечка показывает, что это скрытое поле. Есть ли способ, которым я могу отключить это поле (флаг или что-то) и подавить (allocs / mallocs вне моего кода) в резюме кучи, а?

0 ответов

Другие вопросы по тегам