address-sanitizer相关内容

地址消毒器可以在检测到错误后立即中止吗?

我将syscall检查器与-fsanitize=address结合使用,当ASAN发现错误时,它会在打印报告时调用一些syscall(ioctl(ISATTY)等)。系统调用检查器中断ASAN的ioctls,并且未正确收集错误报告。 我想让ASAN在不打印报告或不打印报告的情况下简单地中止,这样就可以确定(可能使用libasan4 API调用)ASAN发现了错误,这样我就可以停止syscal ..
发布时间:2022-03-21 21:56:17 其他开发

如何使用 cmake 测试预期会因异常而失败的进程?(例如,由于 clang 的地址清理程序导致的失败)

我有一些测试可以测试 clang 的地址清理程序是否捕获特定错误.(我想确保我对它可以捕获的错误类型的理解是正确的,并且未来的版本会继续捕获我期望它们捕获的错误类型.)这意味着我有几个测试失败了OTHER_FAULT,这似乎是 clang 的运行时报告错误的固定方式. 我已将这些测试的 WILL_FAIL 标志设置为 TRUE,但这似乎只是检查成功、无异常失败的返回值.如果进程因异常而终止, ..
发布时间:2022-01-14 18:09:07 其他开发

在适用于 Xcode 的 CMake 中启用 AddressSanitizer 的正确方法是什么

我添加了 AddressSanitizer 标志如下: set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") 使用 Unix Makefiles 时,一切构建和运行良好. 问题是在生成Xcode项目的时候,它只是不想链接,因为它找不到ASan库. 我已经找到了两个解决方案,但决定不使用它们,因为它们无法仅使用 C ..
发布时间:2021-12-26 21:56:41 C/C++开发

如何在 GCC 中使用 AddressSanitizer?

我正在尝试使用 构建我的项目 g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer 但是会出现很多错误,例如: /home/user/libs/opencv/include/opencv2/core/mat.hpp:715: 未定义对`__asan_report_load8'的引用 如何编译支持 AddressSanitize 的项目 ..
发布时间:2021-12-18 22:43:49 其他开发

在 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 C/C++开发

LeakSanitizer和泄漏的库

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

如果该平台不支持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 移动开发

内存/地址消毒器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 C/C++开发

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

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

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

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

-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/C++开发