gpt4 book ai didi

valgrind - 是否可以让 valgrind 忽略某些库?

转载 作者:行者123 更新时间:2023-12-03 06:06:04 29 4
gpt4 key购买 nike

或者最好是全部,而不仅仅是我的代码?我的程序使用 Gtk、Loudmouth 和其他一些东西,而这两个(以及它们背后的一些,libgcrypto、libssl)本身导致了如此多的错误,以至于我无法检测到我自己的错误。是否有可能让 valgrind 忽略来自比我自己的代码更深层的东西?

最佳答案

假设您正在运行 memcheck 工具,并且您想忽略仅 libcrypto 中的Leak 错误,您可以输入 suppression像:

{
ignore_libcrypto_conditional_jump_errors
Memcheck:Leak
...
obj:*/libcrypto.so.*
}

... 到一个文件中,并使用 --suppressions=*FILENAME* 将其传递给 valgrind

忽略任何 lib 目录(/lib/lib64/usr/lib/usr/lib64、...):

{
ignore_unversioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
...
obj:*/lib*/lib*.so.*
}

这不太可能,但您可能需要添加目录模式的其他变体来说明 X11 和 GTK 库的位置。

请注意,这将忽略由您编写的库调用的任何回调引起的错误。捕获这些回调中的错误几乎可以通过以下方式完成:

{
ignore_unversioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so
...
obj:*/lib*/lib*.so
}
{
ignore_versioned_libs
Memcheck:Leak
obj:*/lib*/lib*.so.*
...
obj:*/lib*/lib*.so.*
}

...但这揭示了使用 Valgrind malloc 的库调用中的错误。由于 valgrind malloc 直接注入(inject)到程序文本中(而不是作为动态库加载),因此它在堆栈中的显示方式与您自己的代码相同。这使得 Valgrind 能够跟踪分配情况,但也使得准确执行您所要求的操作变得更加困难。

仅供引用:我正在使用 valgrind 3.5。

关于valgrind - 是否可以让 valgrind 忽略某些库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3174468/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com