首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ubuntu18.04上使用-msan选项运行go测试?

如何在Ubuntu18.04上使用-msan选项运行go测试?
EN

Stack Overflow用户
提问于 2020-07-23 17:26:03
回答 1查看 967关注 0票数 2

当我尝试使用内存是否正常检查运行go单元测试系统时,我会得到一条错误消息,我确信可以通过将编译器设置为CLANG来解决这个错误。

Go命令文档化在这件事上有点简短。

代码语言:javascript
复制
-msan
    enable interoperation with memory sanitizer.
    Supported only on linux/amd64, linux/arm64
    and only with Clang/LLVM as the host C compiler.
    On linux/arm64, pie build mode will be used.

在过去,我使用它,我通过调用:

代码语言:javascript
复制
CC=clang go test -msan ./..

然而,当我现在这样做的时候,我会发现一些错误,例如:

代码语言:javascript
复制
g++: error: unrecognized argument to -fsanitize= option: ‘memory’

为了在Ubuntu 18:04下使用内存杀菌剂运行我的golang测试,我需要做什么?

我目前正在使用以下版本的工具:

代码语言:javascript
复制
$ go version
go version go1.14 linux/amd64
$ clang --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 13:23:16

它需要在运行程序的Ubuntu18.04版本上支持-fsanitize=memory的LLVM版本。请尝试更新,然后再试一次。

还请注意,在Linux上,您至少需要LLVM3.8才能获得-fsanitize标志。

Go工具自动将-fsanitize=memory选项添加到CGO_CPPFLAGS标志中,这是clang为链接所要求的,这将导致您的错误。

此外,请确保同时添加CC和CXX (用于clang++)标志,以便在与C/C++互操作程序时启用Clang编译。

代码语言:javascript
复制
CC=clang CXX=clang++ go build -msan

也参考了这个链接

https://go.googlesource.com/go/+/go1.7/misc/cgo/testsanitizers/test.bash (bash脚本)

(或)

https://github.com/golang/go/tree/master/misc/cgo/testsanitizers (*.go文件)

它将帮助您测试消毒液,如果他们会对您的设置是否有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63059865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档