问题标签 [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.
macos - OS X 上的 Clang 地址清理程序
我想在 OSX Mountain Lion 上使用 clang address sanitizer,因为 Valgrind 在这个平台上的内存检查有问题。但是当我-fsanitize=address
在编译期间(就像我在这个页面上看到的那样: http: //clang.llvm.org/docs/AddressSanitizer.html),我得到了这个错误:clang: error: argument unused during compilation: '-fsanitize=address'
所以,我的问题是如何在 OS X 上使用 Clang Address Sanitizer?如果我不能使用它,我可以使用什么工具?
我已经用 Xcode 下载了 clang,它是最新的。(也许这个版本没有解决它构建的消毒剂)
macos - 使用命令行 clang、OS X 10.9.1、Xcode 5.0.2
我想使用 clang 的 -fsanitize=address 功能。
我上线了:
我正在从命令行运行 clang,但出现错误:
有人告诉我这行得通,但是四处寻找并没有给我指明方向;我需要引入不同版本的clang吗?
谢谢!
c++ - GCC 中地址清理程序的有意义的堆栈跟踪
我刚刚尝试使用 GCC 和-fsanitize=address
标志进行编译。当我运行我的程序时,地址清理程序发现了一个缺陷,但堆栈跟踪没有帮助。如何配置它以使其指向我需要查看的源代码位置?
macos - 如何使 AddressSanitizer 在出现一个错误(和其他问题)后不停止
我正在运行 OS X,10.8.5;我已经通过自制软件(clang 版本 3.4 (tags/RELEASE_34/final))安装了 llvm 3.4,并且正在使用 -fsanitize=address 进行构建。我可以使用简单的演示程序,但是在针对我们的代码库进行构建时,我遇到了几个问题(尽管我真的很想回答 #1):
第 3 方库正在生成 asan 错误,并且 asan 在第一次出现时终止我的应用程序。我认为会有某种(运行时/编译时)选项告诉 asan 在发现错误后继续前进。具体来说,我看到了这个:
此错误不会导致应用程序在未经处理的情况下终止。
使用 -fsanitize=undefined(或 -fsanitize=address,undefined)选项时,我无法获取要链接的代码。我在我的编译和链接命令中都包含了 -fsanitize=undefined 行,但是我得到了链接错误,例如:
/li>我无法让黑名单工作,而且 -mllvm -asan-globals=0 或 -mllvm -asan-stack=0 似乎没有像我预期的那样工作。例如,后者不会抑制上面 #1 中列出的错误的生成,并且创建一个如下所示的黑名单也不会抑制错误:
/li>最后,使用这些 asan 选项生成的可执行文件会导致 lldb 崩溃。我正在使用 XCode 5 工具附带的 lldb;homebew llvm 包没有部署 lldb,我不知道如何构建它。构建说明在此处输入链接描述有一个指向您应该使用的源的死链接;直接从 svn 存储库中提取源代码,使用:
导致代码无法编译(根据要求提供错误)。
gdb - 如何从列出的 libunwind 和 AddressSanitizer 中获取行号+偏移量?
我经常从 libunwind 或 AddressSanitizer 获取堆栈跟踪,如下所示:
我知道如果我将 gdb 附加到仍然存在的进程,我可以使用它来获取有关位置的详细信息:
但是如果进程已经死了,我不能只是在 gdb 下重新启动它并使用上面的方法,因为地址随机化会使我得到错误的结果(至少,这是我的假设;我显然没有得到有意义的位置)。所以,我尝试了
但是,这要么没有列出任何内容,要么显然是错误的位置。这听起来很简单,但我没有找到答案:-( 平台是 64 位 Linux,但我想这适用于任何平台。
debugging - 使用 AddressSanitizer 输出获取行号?
我试图让 AddressSanitizer 在其堆栈跟踪中生成行号。我已经在 Mac 和 Fedora 19 系统上进行了尝试,并且得到了类似的结果。
这是一个简单的程序:
我编译它:
然后我运行它(llvm-symbolizer 在我的路径中):
如您所见,我有符号但没有行号。如何获取行号?
在回答一个问题时,这里是objdump -h x
:
c - 如何使用 clang 的 -fsanitize=address 在调试输出中获取行号?
我正在尝试调试clang
with检测到的内存错误asan
,但valgrind
. 但我无法让我clang
构建的二进制文件为我提供任何有用的调试信息。我可以用一个简短的测试程序来证明这一点:
(很明显这个错误会被 发现valgrind
,纯粹是为了说明问题clang
。)
我用 Clang 3.4-1ubuntu1 编译它,如下所示:
果然,./test
中止,我看到一些调试信息:
但我真正想知道的是发生错误的行号,以及分配内存的位置。
如何从clang
+获取此信息asan
?
c++ - 从主干编译clang时出错
我在编译clang时遇到了错误。似乎为 iOS 模拟器编译的地址清理程序存在问题。我看不出有任何理由链接到 x86_64 的 libclang.dylib。以前有人见过吗?或者有没有办法关掉它?
gcc - 使用 GCC 4.8.2 的 Asan 时堆栈跟踪中未解析的符号
我在这个教程的帮助下尝试寻找错误:https ://fuzzing-project.org/tutorial2.html
当我使用地址清理器时,堆栈跟踪上没有任何符号解析。
我尝试了此处描述的操作:针对 GCC 中的地址清理程序的有意义的堆栈跟踪,但它对我不起作用。我的操作系统是 Ubuntu 14.04
以下是我采取的步骤:
我在 C 中使用了一个测试程序,这是一个典型的错误
/li>我安装 llvm 3.5
apt-get
我导出以下变量
/li>我使用以下命令编译 gcc 4.8.2
/li>当我启动测试程序时,我在错误报告中收到了警告。似乎 AddressSanitizer 无法连接到 llvm-symbolizer-3.5
/li>
而且我在堆栈跟踪上没有任何符号。如果我执行 sudo 我没有任何警告,但我也没有任何符号解析。
p>我也尝试了谷歌页面项目中描述的python脚本asan_symbolize.py
,但没有任何结果。
c++ - 在 OpenCV 中使用地址清理程序
我正在尝试将 Google 的Address Sanitizer与 CUDA 项目一起使用,更准确地说是与 OpenCV cuda 功能一起使用。但是,我在第一次 cuda 调用时遇到了“内存不足”错误。
它可以用
编译
我用 gcc 得到了同样的结果。我也尝试过将 cuda 函数列入黑名单,但没有结果。
现在使用没有opencv的cuda:
清理程序在内存泄漏时停止:
我的问题是如何使用地址清理程序来清理我的软件而不会陷入困境?我怎样才能至少正确地将所有与 cuda 相关的调用列入黑名单?
我在著名的网络搜索引擎上没有找到任何相关内容。就像人们不使用 cuda 或 asan 或两者兼而有之。伙计们只是有一个完全禁用 cuda 的构建吗?
我猜 asan 在 cuda 内存管理方面遇到了困难,但我正在寻找一种方法,至少在我的代码库的其余部分使用这个工具。