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

how to use ubsan on gcc (windows 8.1)

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

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

updated my GCC today so I could use ubsan。根据 gcc --version,我当前的版本是 5.3.0。我以为这次更新会添加 ubsan,但似乎不是,因为在用 C:\Users\my_name\Desktop>gcc -fsanitize=undefined a.c 编译后,我得到的是:

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

现在,我看到 this post but the OS is Ubuntu 15.04 and I use Win 8.1 so that didn't help me. One of the comments here 说:

You will need to install the libubsan package.

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

编辑: 我也试过编译 gcc -fno-sanitize=all a.chere 中有很多选项)并且编译时没有警告,所以我猜GCC 以某种方式识别消毒剂(因为它编译正常)但出于某种原因拒绝了我最初的编译尝试

对于 x86_64 上的 GCC 消毒程序运行时库(包括 -lubsan)仅支持 Linux、OSX、FreeBSD 和 Solaris(参见 https://github.com/gcc-mirror/gcc/blob/master/libsanitizer/configure.tg详情)。很遗憾,您还不能在 Windows.

上使用 UBsan