acm*_*acm 20 ubuntu clang address-sanitizer ubuntu-16.04
在Ubuntu 14.10上,llvm-symbolizer
程序安装为/usr/bin/llvm-symbolizer-3.5
.通常情况下,地址消毒剂希望找到一个名为二进制llvm-symbolizer
在PATH
.但是,作为一种解决方法,可以明确设置ASAN_SYMBOLIZER_PATH
.因此,ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.5
在环境中设置会让地址清理程序检测程序打印符号化错误.
在Ubuntu 16.04上,llvm-symbolizer
程序再次安装了版本后缀,现在为/usr/bin/llvm-symbolizer-3.8
.但是,ASAN_SYMBOLIZER_PATH
设置似乎不再起作用.ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-3.8
当ASAN检测到错误时,在环境中运行带有set 的ASAN检测程序会生成以下错误:
==18718==ERROR: External symbolizer path is set to '/usr/bin/llvm-symbolizer-3.8' which isn't a known symbolizer. Please set the path to the llvm-symbolizer binary or other known tool.
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这种行为改变了,或者如何恢复旧的行为?这似乎是不合理的限制.我指向ASAN的符号化程序绝对是一个已知的符号化器,它恰好在最后有一个Ubuntu强制版本标签.
请注意,调整PATH
在这里没有用,因为Ubuntu不提供没有llvm-symbolizer
版本装饰的二进制文件.
acm*_*acm 17
原来,上LLVM的Ubuntu的包装,一个可以得到缦llvm-symbolizer
从路径二进制/usr/lib/llvm-3.x/bin
,所以PATH=/usr/lib/llvm-3.x/bin:$PATH [COMMAND]
做的伎俩.我仍然认为这个变化是在compiler_rt中的回归.
下列
sudo ln -s /usr/bin/llvm-symbolizer-3.8 /usr/bin/llvm-symbolizer
Run Code Online (Sandbox Code Playgroud)
也适用于 llvm-symbolizer-4.0
(复制自@Eraden评论)
归档时间: |
|
查看次数: |
3917 次 |
最近记录: |