基于Matlab的Linux下LLVM地址消毒器
我尝试使用地址消毒剂调试Matlab Mex代码。我需要调用Matlab,然后运行Matlab脚本来调用Mex函数。我做了以下配置基于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中也做了类似的事情,
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。