问题标签 [address-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.
xcode - Xcode 不支持 no_sanitize?
有谁知道如何使用 Xcode 7.x 附带的 clang 版本禁用特定功能的地址清理程序?似乎不支持函数属性 no_sanitize(..) 还是我错过了什么?
我使用基于 LLVM 3.7.0 的 XCode 7.0.2 (clang-700.1.81)。
c - 使用 gcc 4.8 构建时如何检测是否使用地址清理器构建?
我正在开发一个用 C 语言编写的程序,我偶尔会使用地址清理程序构建该程序,主要是为了捕捉错误。该程序在启动时会在日志中打印一个横幅,其中包含以下信息:谁构建了它,构建它的分支,编译器等。我想如果二进制文件是使用地址清理程序构建的,也可以很好地说明. 我知道有 __has_feature(address_sanitizer),但这仅适用于 clang。我尝试了以下简单的程序:
使用 构建时gcc -Wall -g -fsanitize=address -o asan asan.c
,会产生:
我得到clang -Wall -g -fsanitize=address -o asan asan.c
:
是否有相当于 __has_feature 的 gcc?
我知道有一些方法可以检查,例如使用地址清理程序构建的程序的巨大 VSZ 值,只是想知道是否有编译时定义或其他东西。
c - 使用 Address Sanitizer 作为 Valgrind 的替代品
我已经读过 Address Sanitizer 是 valgrind 的可用替代品。所以要进入它,我从一个简单的例子开始。我已将以下给定代码写入 use_after_free.c
我已经安装了以下库:
然后我使用以下命令编译了代码:
当我执行使用上述命令创建的二进制文件时,我预计地址清理程序会出现一些错误。但我得到的输出没有任何错误。我的方法有什么问题吗?
编辑:我使用的是 ubuntu 12.04、llvm 3.1 和 clang 3.1
colors - 在地址清理器输出中禁用颜色
有没有机会禁用 Asan 的终端颜色输出?无论我通过哪个标志,它都会打印终端颜色代码:
我尝试过的论点:
我想念什么?有没有我可以用来关闭它的 API?
package - 对于 32 位,我需要将 clang 与 asan 一起使用什么包?
使用 clang++ 和编译时出现此错误-fsanitize=address -m32
:
我需要什么包裹?我已经尝试过libclang-3.6-dev
我也收到了 clang 3.7 的错误-m64
:
c++ - 如何将 Google AddressSanitizer 引发的错误记录到日志文件中
默认情况下,AddressSanitizer 会将所有错误都抛出到 shell 本身,因此我尝试使用以下命令运行我的 ASAN 构建;
但是我仍然将输出输出到 shell 本身而不是日志文件。
如何将输出捕获到日志文件?
gcc - 在 32 位模式下具有地址清理程序的大型公共块
我在使用可以简化为此示例的旧 Fortran 代码时遇到问题:
请注意,从不从程序中调用子例程。在 64 位机器上编译和运行它,给了我:
gfortran 版本:
将大小减小AA
1(在我的测试中)可以解决问题。在不同的系统或情况下,限制大小可能不同。
据我所见,公共块的大小远不及 2GB,我预计-m32
会出现问题。这是地址清理程序的限制吗?我可以使用任何命令行或运行时技巧来解决该问题吗?
编辑:它可能与公共块无关,但是公共块中的数组即使从未使用过也会被分配。这会导致同样的问题:
请注意,可分配数组的限制几乎是静态数组的 8 倍。
ios - “内存历史”命令到底是什么?
摘要:我收到消息:
AddressSanitizer debugger support is active. Memory error breakpoint has been installed and you can now use it in the 'memory history' command.
什么是“ memory history
”命令,我该如何使用它?
细节:
- 我有一些代码有内存警告,导致崩溃。
- 我通过“编辑方案”>“运行”>“启用地址清理器”打开了地址清理器。
- 打开它并再次运行相同的代码后,崩溃不再发生,但出现了消息。
这是什么意思,内存历史命令到底是什么?我该如何使用它?我已经搜索过,但我没有找到任何可以回答我的问题的东西。
clang - 地址消毒剂警告
几天来,我在 Xcode 7.3 中启动 Address Sanitizer 时遇到以下问题。当 Sanitizer 发现问题(实际上被文件抑制)时,将错误消息打印到 Xcode 控制台:
==13392==警告:无法写入 fd 55 处的符号器
==13392==警告:无法写入 fd 55 处的符号器
==13392==警告:无法写入 fd 55 处的符号器
==13392==警告:无法写入 fd 55 处的符号器
==13392==警告:无法使用和重新启动外部符号!
我在存储库中找到了错误消息,但我仍然无法解释发生了什么。显然内部写入功能失败,但我不知道是什么原因造成的。有任何想法吗?
ios - XCode AddressSanitizer 结果解读
我最近开始使用 XCode AddressSanitizer,我认为它是在 XCode 7 中引入的(参见例如Apple WWDC 演示文稿),以帮助解决难以发现的奇怪错误。Sanitizer 实际上发现了一个问题,但我很难解释它的含义。
您是否了解 AddressSanitizer 可以报告的错误类型的概述及其解释?
在我的具体情况下,该错误在 iOS 库的深处报告,最终源自我的代码:
报告的错误是:
有人知道这个特定错误是什么意思吗?