C Valgrind-抑制文件太一般?
我是valgrind的新手,首先要注意的是,OS X El Capitan上的标准C库似乎在泄漏内存(可能丢失)。在多读一点之后,情况并非如此,可以使用抑制文件从valgrind泄漏摘要中排除系统库 我生成了一个这样的抑制文件(通过运行一个简单的程序)并将错误添加到抑制文件中。看起来是这样的: osx_el__capitan_c_lib.suppC Valgrind-抑制文件太一般?,c,memory-leaks,valgrind,suppress-warnings,suppression,C,Memory Leaks,Valgrind,Suppress Warnings,Suppression,我是valgrind的新手,首先要注意的是,OS X El Capitan上的标准C库似乎在泄漏内存(可能丢失)。在多读一点之后,情况并非如此,可以使用抑制文件从valgrind泄漏摘要中排除系统库 我生成了一个这样的抑制文件(通过运行一个简单的程序)并将错误添加到抑制文件中。看起来是这样的: osx_el__capitan_c_lib.supp { <osx_el_capitan_c_lib> Memcheck:Leak match-leak-kinds: poss
{
<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
}
{
Memcheck:泄漏
匹配泄漏类型:可能
乐趣:malloc_zone_malloc
乐趣:_objc_copyClassNamesForImage
乐趣:ZL9protocolsv
乐趣:Z9readClassP10objc_classbb
乐趣:gc_init
乐趣:_ZL33objc_initializeClassPair_internalP10objc_classPKcS0_S0_
乐趣:布局\字符串\创建
乐趣:_ZL12realizeClassP10objc_类
乐趣:ZL22copySwiftV1MangledNamePKcb
乐趣:ZL22copySwiftV1MangledNamePKcb
乐趣:ZL22copySwiftV1MangledNamePKcb
乐趣:ZL22copySwiftV1MangledNamePKcb
}
现在我有几个问题:
- 这个文件是否可能阻止我的实际代码泄漏(而不是系统libs)?我测试了一点明确泄漏/不泄漏的代码,它似乎工作得很好。但我怎么能确定呢
- 默认输出电流如下所示(绝对不会泄漏):
==37004==Memcheck,内存错误检测器 ==37004==Julian Seward等人2002-2015年版权(C)和GNU GPL'd。 ==37004==使用Valgrind-3.11.0和LibVEX;使用-h重新运行以获取版权信息 ==37004==命令:./val.o ==37004== ==37004== ==37004==堆摘要: ==37004==在出口处使用:187个块中的22100字节 ==37004==总堆使用率:271个alloc,84个free,28340个字节分配 ==37004== ==37004==泄漏汇总: ==37004==肯定丢失:0个块中有0个字节 ==37004==间接丢失:0个块中有0个字节 ==37004==可能丢失:0个块中有0个字节 ==37004==仍然可访问:0个块中有0个字节 ==37004==抑制:187个块中的22100字节 ==37004== ==37004==对于检测到的和抑制的错误计数,请使用:-v重新运行 ==37004==错误摘要:来自0个上下文的0个错误(已抑制:18个来自18个) 正如您所看到的,抑制文件目前运行良好(没有显示为丢失的字节,等等)。但是堆摘要似乎不受抑制文件的影响(
/allocs
显示-它们发生在我的代码之外),泄漏摘要显示为抑制字段。是否有一种方法可以禁用此字段(标志或其他内容)并在堆摘要中抑制(mallocs
/allocs
)?mallocs