问题标签 [leak-sanitizer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 我如何知道是否在编译时启用了 Leak Sanitizer?
GCC 和 Clang 编译器都支持LeakSanitizer,这有助于发现 C 程序中的内存泄漏。有时内存泄漏是不可避免的(例如,因为它正在测试套件中进行测试)。
这样的内存可以使用Leak Sanitizer 接口进行注释:
然而,这将在不支持 LSan 的编译器上中断。在 Address Sanitizer 中,此构造可用于检测 ASAN 的可用性:
在 Clang中没有__has_feature(leak_sanitizer)
检测到 LSan 的__SANITIZE_LEAKS__
存在,对于 GCC 也不存在。无论如何,我如何检测 ASAN 可用性?请注意,LSan 可以独立于 AddressSanitizer 和 ThreadSanitizer 启用。
c++ - Clang fsan 未在堆栈跟踪中显示行号
Clang++ 的泄漏清理器声称我在我的一个单元测试中存在内存泄漏。我倾向于相信它,但我无法通过检查找到它。
我正在使用以下选项进行编译:
我得到的输出看起来像
(删除了不重要的信息)。
上面输出的问题是我得到的是内存地址而不是文件和行号,这样我就可以弄清楚泄露了什么!
根据谷歌 Clang 的 Chandler Carruth 的说法,启用调试输出 ('-g') 应该会导致堆栈跟踪中的内存地址被文件和行号替换。(您可以在此处具体看到他应用它。)正如您从我的编译标志中看到的那样,我正在发出调试信息。
知道我可能忽略了什么吗?
c++ - 了解 LeakSanitizer 输出
我在我的程序中使用来自 g++ 的 AddressSanitizer,并且有一些输出我无法理解和采取行动。
我之前使用的是 g++-4.8.4,我很确定没有泄漏报告,但我最近切换到 g++-5.2.1,现在我有新的错误报告。我猜gcc5变得更好了。
但是,其中一些非常神秘,例如:
下一个更清楚:
前三个报告是否与最后一个报告相关联?如果他们是独立的,有没有办法找出问题所在?
谢谢。
c - 如果程序崩溃,Google 的 Leak Sanitizer 能否报告泄漏?
以下程序在空指针取消引用时崩溃:
使用 Valgrind 执行时,仍然会报告内存泄漏(尽管发生了崩溃)。但是,当通过使用 -fsanitize=leak 编译程序来使用 Leak Sanitizer 时,程序会崩溃并且不会报告泄漏。
当程序崩溃时,有没有办法从 Leak Sanitizer 获取报告?
memory-leaks - 直接泄漏和间接泄漏有什么区别?
我从 LeakSanitizer 工具得到以下输出。正如该工具所理解的那样,直接泄漏和间接泄漏之间有什么区别?
android - asan_device_setup.sh 错误:“没有这样的文件或目录”;但它确实存在
我正在尝试设置一个模拟的 android 设备来使用 Google 的消毒剂调试一些本机代码。在使用准备设备运行净化代码所需的 asan_device_setup 脚本时,出现以下情况:
输出:
脚本针对第一组错误运行的代码是:
我检查了源文件和“$TMPDIROLD”文件夹都存在,这与错误消息所暗示的相反。
任何帮助找出造成这种情况的原因将不胜感激。
终端:Cygwin
模拟器:Android API21,已植根
gcc - gcc 的有效消毒剂抑制字符串是什么?
当使用带有 gcc 的消毒剂时,可以提供一个例外/抑制列表来处理误报等。
抑制文件格式的文档记录很差。
每个抑制的形式
的有效值是name_of_check
什么?
c - LeakSanitizer 的运行时检查 (detect_leaks=1)
我有一个问题,即通过动态加载的库的任何 Leak Sanitizer 回溯报告Unknown Module
该库中的任何函数调用。
我以前遇到过与 valgrind 几乎相同的问题,我知道这是由于在退出时使用 dlclose 卸载了库,并且符号器运行时符号不可用。
使用 valgrind 修复很简单
RUNNING_ON_VALGRIND
是 valgrind 库提供的一个宏,用于检测程序是否是 valground。
我在 LSAN 文档中看不到任何关于何时ASAN_OPTIONS=detect_leaks=1
设置的类似功能的内容。
有谁知道是否可以执行运行时检查以在 LSAN 下运行?
c++ - 在 -fsanitize=address 下运行时如何抑制 LeakSanitizer 报告?
当我用 编译我的 C++ 代码时-fsanitize=address
,我的软件会在退出时打印出泄漏列表。有没有办法避免泄漏报告(我只对内存损坏感兴趣,而不是泄漏)?我去了带有ASAN flags page的页面,但看起来这些标志中的任何一个都不匹配。
memory-leaks - LeakSanitizer 在简单的 MPI 程序中发现泄漏
这个简单的程序根据LeakSanitizer泄漏内存。
我将它链接到 Open MPI v1.10.2。
This other question问了几乎相同的问题,但使用 valgrind 而不是 LeakSanitizer。答案解释了报告的内存泄漏是误报,并指导如何在使用 valgrind 时抑制它们。
我想 LeakSanitizer 报告的内存泄漏也是错误的。是这样吗?有可能压制他们吗?