微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ubuntu – 为什么ASAN_SYMBOLIZER_PATH不再适用于版本装饰的二进制文件

在Ubuntu 14.10中,llvm-symbolizer程序安装为/usr/bin/llvm-symbolizer-3.5.通常,地址消毒器希望在PATH中找到一个名为llvm-symbolizer的二进制文件.但是,作为解决方法,可以显式地设置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检测到错误时,在环境中运行ASAN测试程序,ASAN_SYMBOLIZER_PATH = /usr/bin/llvm-symbolizer-3.8在环境中设置会产生以下错误

==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.

有没有人知道为什么这种行为改变了,还是如何恢复旧的行为?这似乎是无限制的限制.我指出ASAN对象的符号程序绝对是一个已知的象征者,它最后只是有一个Ubuntu的强制版本标签.

请注意,在这里调整PATH并没有帮助,因为Ubuntu没有发布没有版本装饰的llvm-symbolizer二进制文件.

事实证明,在Ubuntu的LLVM封装中,可以从路径/usr/lib/llvm-3.x/bin获取未装载的llvm-symbolizer二进制文件,因此PATH = /usr/lib / llvm-3.x / bin:$PATH [COMMAND]这样做.我仍然认为这个改变是在compile_rt中的一个回归.

原文地址:https://www.jb51.cc/ubuntu/347332.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐