我正在为我无法控制的第三方构建一个插件。我想使用带有 Xcode 7 的 Address Sanitizer 和这个插件。我可以成功编译我的插件并安装它。问题是我无法证明它有效。我包含以下代码以确保消毒剂检测到问题:
int* test = (int*)malloc(sizeof(int));
free(test);
*test = 5;
NSLog(@"%d", *test);
当第三方应用程序加载我的插件时,预期的崩溃永远不会发生,并且数字 5 会被记录。
我已经使用DYLD_PRINT_LIBRARIES_POST_LAUNCH
环境变量来证明地址清理程序运行时库已加载,果然,它是:
dyld: loaded: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib
当主可执行文件不使用它时,有什么方法可以让这个诊断工具在插件上工作?