我正在为第三方构建一个我无法控制的插件。我想在这个插件中使用带有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
当主可执行文件不使用时,有什么办法可以让这个诊断工具在插件上运行吗?