基于Matlab的Linux下LLVM地址消毒器

基于Matlab的Linux下LLVM地址消毒器,linux,matlab,llvm,centos7,address-sanitizer,Linux,Matlab,Llvm,Centos7,Address Sanitizer,我尝试使用地址消毒剂调试Matlab Mex代码。我需要调用Matlab,然后运行Matlab脚本来调用Mex函数。我做了以下配置 export LD_PRELOAD=/llvm_lib_path/libclang_rt.asan-x86_64.so export ASAN_OPTIONS=alloc_dealloc_mismatch=0:halt_on_error=false:verbosity=1 但当我调用Matlab时,它很快就会挂断,无法启动GUI 我在MacOs中也做了类似的事情,

我尝试使用地址消毒剂调试Matlab Mex代码。我需要调用Matlab,然后运行Matlab脚本来调用Mex函数。我做了以下配置

export LD_PRELOAD=/llvm_lib_path/libclang_rt.asan-x86_64.so
export ASAN_OPTIONS=alloc_dealloc_mismatch=0:halt_on_error=false:verbosity=1
但当我调用Matlab时,它很快就会挂断,无法启动GUI

我在MacOs中也做了类似的事情,并按预期工作

当verbosity=1时,我可以看到消毒剂在

==30485==T27 TSDDtor

==30485==T27 exited

==30485==T28: stack [0x2b2b6d23e000,0x2b2b6d43cdc0) size 0x1fedc0; local=0x2b2b6d43ccd4

==30485==T28 TSDDtor

==30485==T28 exited

==30485==T29: stack [0x2b2b6d23e000,0x2b2b6d43cdc0) size 0x1fedc0; local=0x2b2b6d43ccd4

==30485==T29 TSDDtor

==30485==T29 exited

==30485==T30: stack [0x2b2b6d23e000,0x2b2b6d43cdc0) size 0x1fedc0; local=0x2b2b6d43ccd4

==30485==T30 TSDDtor

==30485==T30 exited

有什么想法吗?

您可能应该使用GCC版本的地址消毒剂。Linux上的MATLAB是用GCC构建的,它不正式支持其他MEX文件编译器。我想也许CLANASAN库可能会干扰GCC运行时。我们使用CLAN编译Max和C++代码。由于可移植性问题,无法切换到gcc。