如何在 gcc 上使用 ubsan (windows 8.1)

CIs*_*ies 6 c windows gcc undefined-behavior ubsan

为了更好地防止 UB 情况,例如:

#include <stdio.h>
int f(){
  int x;
  return x;
}
int main()
{
   f();
   while(1);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我今天更新了我的 GCC,所以我可以使用ubsan。我当前的版本是 5.3.0 根据gcc --version. 我以为这次更新会添加ubsan,但似乎不是因为在编译后C:\Users\my_name\Desktop>gcc -fsanitize=undefined a.c我得到了:

c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: 无法 fin d -lubsan

现在,我已经看到了这篇文章,但操作系统是Ubuntu 15.04我使用的,Win 8.1所以对我没有帮助。这里的评论之一说:

您将需要安装 libubsan 软件包。

但我不知道它是否是针对 的windows/ubuntu,即使是针对windows用户的,我也不知道该怎么做。

编辑:我也试过编译gcc -fno-sanitize=all a.c(有很多的选择在这里),这编译没有警告,所以我想GCC认识消毒剂以某种方式(因为它编译OK),但拒绝我原来编译尝试由于某种原因

yug*_*ugr 1

对于 x86_64 上的 GCC,sanitizer 运行时库(包括-lubsan)仅支持 Linux、OSX、FreeBSD 和 Solaris(有关详细信息,请参阅https://github.com/gcc-mirror/gcc/blob/master/libsanitizer/configure.tg)。不幸的是,您还无法在 Windows 上使用 UBsan。