Debugging 停止在-O0优化变量?

Debugging 停止在-O0优化变量?,debugging,optimization,clang++,Debugging,Optimization,Clang++,我们在一个边缘测试用例上遇到了一个碰撞。edge case手动启用所有X86 cpu功能,因为Clang并不总是使用-march=native启用这些功能。该案例还包括地址消毒剂: $ CXX=clang++ make CXXFLAGS="-DDEBUG -g3 -O0 -std=c++03 -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -maes -mpclmul -mrdrnd -mrdseed -mavx -mavx2 -mbmi -mbmi2 -madx

我们在一个边缘测试用例上遇到了一个碰撞。edge case手动启用所有X86 cpu功能,因为Clang并不总是使用
-march=native
启用这些功能。该案例还包括地址消毒剂:

$ CXX=clang++ make CXXFLAGS="-DDEBUG -g3 -O0 -std=c++03 -msse2 -msse3 -mssse3 -msse4.1 -msse4.2
-maes -mpclmul -mrdrnd -mrdseed -mavx -mavx2 -mbmi -mbmi2 -madx -march=native -fPIC -pipe
-fsanitize=address -fno-omit-frame-pointer"
make: Nothing to be done for `all'.
稍后,当我们在GDB下运行程序时,变量和值丢失:

$ gdb cryptest.exe
...
(gdb) r v
...
Testing RDRAND generator...

Program received signal SIGSEGV, Segmentation fault.
0x0000000001db20b4 in CryptoPP::GCC_RRA_GenerateBlock (output=<optimized out>, 
    size=<optimized out>, safety=<optimized out>) at rdrand.cpp:235
235         __asm__ volatile(

你知道这件事吗?@Person93-对不起,没有。
$ clang --version
Ubuntu clang version 3.6.0-2ubuntu1~trusty1 (tags/RELEASE_360/final) (based on LLVM 3.6.0)