address-sanitizer相关内容

在 Windows (MinGW) 的 Qt Creator 中使用地址清理器找不到 -lasan

我正在尝试通过将 CONFIG += sanitizer sanitize_address 添加到我的 .pro 文件来在 Qt 中使用 gcc 地址清理器,但我得到了一个 错误:找不到-lasan. 我应该如何安装库? 我正在使用 Qt 提供的 MinGW,但我也可以尝试独立版本. 相关问题:MinGW-w64 的 gcc 和 Address Sanitizer 解决方案 ..
发布时间:2021-06-30 18:53:54 其他开发

可以使用-fsanitize = address运行MEX文件吗?

我有一个用G ++正常编译的MEX文件. 我最近将其编译版本更改为使用clang ++,并在 LDFLAGS 和 CFLAGS 中都包含了 -fsanitize = address (注意:无CXX该项目存在标志). 但是,尽管如此,一旦我进入MATLAB并尝试调用MEX文件,我就会得到: 无效的MEX文件'(mex文件的路径)':未定义符号:__asan_option_dete ..
发布时间:2021-05-31 21:08:25 其他开发

LeakSanitizer和泄漏的库

我正在尝试使用gcc的泄漏消毒剂选项来检测程序中的泄漏. 为此,我使用相关标志进行编译,运行我的程序,然后终止,这将导致以下输出: == 8013 ==错误:LeakSanitizer:检测到内存泄漏在1个对象中直接泄漏了72704个字节,这些对象分配自:#0 0x7f3ace944ada在__interceptor_malloc/build/gcc/src/gcc/libsanitiz ..
发布时间:2021-04-29 20:29:31 其他开发

带有MinGW-w64的Clang 8:如何使用地址&UB消毒剂?

Clang 8发行说明包含以下内容有希望的行: 允许在MinGW上使用Address Sanitizer和Undefined Behavior Sanitizer. 但是,我无法弄清楚如何正确使用它们. 我将Clang 8.0.0与MSYS2 MinGW GCC结合使用.确切的细节在问题的底部. 我正在尝试用最少的代码来编译: 1.cpp #include ..
发布时间:2021-04-22 18:41:19 其他开发

如果该平台不支持Address Sanitizer说出detect_leaks,我该如何解决?

我正在使用Clang在x86_64 OS X(MacOS 10.15.5 Catalina)上编译项目. 我想准确地确定从哪个文件,哪个函数,哪一行导致内存泄漏.我正在尝试使用地址清理器,特别是此食谱. Valgrind退出程序后显示消息,因此它将无法正常工作. 您是正确的:默认情况下,Valgrind仅在程序退出时执行泄漏分析. 有两种解决方法: 使您的程序在执行中 ..
发布时间:2021-04-22 18:40:20 其他开发

使用包装器脚本时无法调试应用

我已为我的应用的本机代码激活了地址清除程序,以检测某些内存泄漏.但是我有一个奇怪的问题. 在激活地址清理器之前,应用程序可以正常运行,并且我可以对其进行调试而没有任何问题.但是,在激活地址清理器之后,即使它运行正常,我也无法调试应用程序.这是一个非常奇怪的行为,因为激活地址清理器后,"Waiting for Debugger..."消息不再显示,并且在调试控制台中出现以下错误: Cou ..
发布时间:2020-08-27 22:26:01 其他开发

Mac OS:泄漏消毒剂

Mac OS X Sierra 10.13 我照这里写的去做 https://clang.llvm.org/docs/LeakSanitizer.html 即创建了带有内存泄漏的小型应用程序 #include void *p; int main() { p = malloc(7); p = 0; // The memory is leaked her ..
发布时间:2020-06-19 18:33:26 其他开发

内存/地址消毒器vs Valgrind

我想要一些工具来诊断用户后释放错误和未初始化的错误.我正在考虑使用消毒剂(内存和/或地址)和Valgrind.但是我对它们的优缺点几乎一无所知.谁能告诉我Sanitizer和Valgrind的主要功能,区别和优点/缺点? 编辑:我发现了一些比较,例如:Valgrind使用DBI(动态二进制工具),而Sanitizer使用CTI(编译时工具).无论Sanitizer运行速度是否比Valgrin ..
发布时间:2020-06-19 18:33:24 其他开发

Asan:有关Asan库加载的问题

在我们的构建系统中,我们最近将ASAN工具(添加-fsanitize = address)集成到CFLAGS&还在链接时,创建库.so文件。 注意:-我们正在使用GCC 6.3编译器。 我们能够成功地构建代码。但是运行时失败,并出现以下问题: == 52215 == ASan运行时不在初始库列表中;您应该将运行时链接到您的应用程序,或者使用LD_PRELOAD手动对其进行预加载。 ..
发布时间:2020-06-04 19:04:18 其他开发

应该如何读取堆缓冲区溢出错误消息?

我想知道应该如何阅读以下错误消息。特别是: (1)诸如fa(左堆红色区域)和fd(释放堆区域)之类的东西是什么意思? (2)00和05的含义是什么。 (3)指向(0x0c067fff8010)的存储块的意义是什么? (4)什么是野指针? (5)为什么fa与 编译命令 是在方括号([fa])中带有箭头的内存块吗? clang ++ test.cpp -f ..
发布时间:2020-06-04 19:04:16 其他开发

ASAN检测到ODR违反了与动态加载的库共享的类vtable

我正在一个项目中,该项目具有一个“ util”库,其中包含诸如日志记录,断言处理等内容。此库被编译为一个静态库,并添加了 -fPIC 。我还有一个插件系统,其中的插件是在运行时通过 dlopen 加载的共享库。这些插件和主要可执行文件都使用静态util库。 问题:现在我得到 AddressSanitizer:odr-violation 错误。问题是 size = 40'stdStreamWr ..
发布时间:2020-06-04 19:04:13 其他开发

我如何抑制gcc中来自AddressSanitizer的堆栈缓冲区溢出

我的应用程序正在使用 boost :: program_options ,它会触发AddressSanitizer“ stack-buffer-overflow”,同时从异常中生成错误消息。 我不担心增强错误-功能起作用,而这只是在非生产应用程序的命令行解析部分中。但是我想隐藏AddressSanitizer消息。 错误:AddressSanitizer:堆栈缓冲区-在PC 0x000 ..
发布时间:2020-06-04 19:04:11 其他开发

-static-libasan的未定义符号错误

我使用地址清理程序来清理我的与SOCI链接的应用程序。但是,在与Oracle一起使用时,会出现提示afterijg错误消息。 ./ SociUT:符号查找错误:/home/testhome/libs/libsoci_oracle.d.so.1.4.18:未定义符号:__asan_unregister_globals 以下是应用程序的构建输出 /home/rel/ ..
发布时间:2020-06-04 19:04:06 其他开发

C ++中的AddressSanitizer黑名单不起作用

我正在尝试让地址清理器黑名单在C ++项目中工作,但其未按预期工作。我在他们的网站上尝试了该示例,如果我使用 clang 进行编译,则可以正常工作。 构建%cat prevent.txt fun:bad_foo build%cat foo.c #include void bad_foo(){ int * a =(int *)malloc(40); ..
发布时间:2020-06-04 19:04:00 其他开发

如何使用Leak Sanitizer查找内存泄漏的原因

我有一个使用tbb的C ++程序,我正在使用GCC 6.2.1在64位Linux上进行编译。 当我使用address sanitizer(-fsanitize = address)进行编译并运行单元测试时,将生成以下输出: ... [通过] 56个测试。 =========================================== ================= ..
发布时间:2020-06-04 19:03:56 其他开发

在python扩展上解决Sanitizer

我正在尝试使用Address Sanitizer编译python扩展。加载扩展程序时,我得到 Traceback(最近一次通话): 文件“ test.py”在中的第2行来自扩展名导入包 的 文件“ /tmp/python_test/extension/package.py”,第28行,在中来自extension._ext import的 * Imp ..
发布时间:2020-06-04 19:03:52 其他开发

使用gcc 4.8构建时如何检测是否使用地址清理器构建?

我正在开发一个用C编写的程序,我偶尔会使用地址清理器来构建该程序,主要是为了捕获错误。该程序在启动时会在日志中显示一条横幅,其中包含以下信息:谁构建了它,构建了它的分支,编译器等。我认为如果二进制文件是使用地址清理器构建的,也可以很好地阐明它。我知道有__has_feature(address_sanitizer),但这仅适用于clang。我尝试了以下简单程序: #include ..
发布时间:2020-06-04 19:03:50 其他开发

在-fsanitize = address下运行时,如何隐藏LeakSanitizer报告?

当我使用 -fsanitize = address 编译C ++代码时,我的软件在退出时会打印出泄漏列表。有没有办法避免泄漏报告(我只对内存损坏感兴趣,而对泄漏不感兴趣)?我进入了 ASAN标志页面的页面,但是 解决方案 您可以使用 export ASAN_OPTIONS运行= detect_leaks = 0 或向您的应用程序添加函数: const char * __asan_d ..
发布时间:2020-06-04 19:03:45 其他开发