pau*_*kow 10 xcode memory-leaks instruments sentestingkit
我正在开发一个数据库访问库,我正在尝试使用已经编写的单元测试来检查内存泄漏.
这些是基于SenTestingKit的逻辑测试,在Xcode 4.2中设置了正常的方式.我可以使用Cmd-U运行它们,但是没有办法从Instruments启动它们,或者调用Instruments来检查它们.
我怎样才能做到这一点?我是否需要编写新案例并将其构建到应用程序中?
(这个问题是关于泄漏检查单元测试,但我认为是pre-SenTestingKit.)
gai*_*ige 10
这个答案从SenTest for OS X开始.如果您担心在仪器下使用SenTest for iOS,请跳到下一部分.
我意识到这有点晚了,但我今天需要在逻辑测试中运行仪器并让它适用于我的环境,所以这就是我所做的:
OBCJ_DISABLE_GC用的值YES作为环境变量(不这样做,如果你正在运行GC)DYLD_FRAMEWORK_PATH并指向包含.octest包的目录DYLD_LIBRARY_PATH与DYLD_FRAMEWORK_PATH相同的值-SenTest Self和.octest包的完整路径某些环境变量和工作目录可能不是必需的,具体取决于您是否需要加载其他框架以及代码目录中是否有需要读取的测试文件.因此,如果这些步骤不适用于您,您可以省略这些步骤.
完成后,您将能够保存文档并使用它来运行测试.
在OP澄清了要求之后,我开始使用基于iOS模拟器的项目验证基本指令.
对于iOS,您需要一个稍微不同的配置,因为您正在调试不同的可执行文件,并且您将需要不同的库.因此,DYLD_FRAMEWORK_PATH将包含.octest包的目录路径和模拟器框架的路径.后者将是这样的:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/Library/Frameworks
取决于您使用的模拟器的版本,我们将在下面将其称为SDKPATH
/Applications/Xcode并查找其中的otest二进制文件/Applications/Xcode/Developer/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/Developer/usr/bin/并选择它DYLD_LIBRARY_PATH并指向包含.octest包的目录DYLD_ROOT_PATH指向SDKPATH(上面)IPHONE_SIMULATOR_ROOT使用SDKPATH 添加(上面)DYLD_FRAMEWORK_PATH并指向包含.octest包和SDKPATH(上面)的目录,:在路径列表中用冒号()分隔它们CFFIXED_USER_HOME你的iPhone模拟器回家(~/Library/Application Support/iPhone Simulator虽然我把它扩展到它之前,因为我不确定〜得到解释)-SenTest Self和.octest包的完整路径这是另一种方法,这样做更简单,并允许更好地控制你的配置文件:
在setUp的开头放置一个断点并运行要运行的测试.当Xcode命中断点时,打开Instruments并在目标下搜索octest.然后您可以简单地附加到该过程.切换到Xcode并在断点后继续运行,仪器应分析您要运行的所有测试.
希望这可以帮助.