有人能指出有关如何使仪器运行UIAutomation脚本并使用模拟器中运行的调试器启动iPhone应用程序的文档吗?
约束: 我只有iPhone 3g硬件进行测试,并且使用UIAutomation对设备进行调试只是不能可靠地工作。 通常运行测试脚本以确保一切都通过,但现在存在一个奇怪的错误,只有在UIAutomation脚本运行时才会触发(这是一件好事)。在手动操作中无法复制该错误。 似乎没有将仪器UIAutomation连接到已经在模拟器中运行的过程。没有选择。 直接启动仪器UIAutomation不会使它从调试器启动。
我认为有一些命令行魔法可以在Instruments编辑活动目标(环境变量,参数,工作目录)中配置,以实现这一点,但我没有找到神奇的段落。
谢谢, 尼尔
答案 0 :(得分:4)
这也困扰了我一段时间 - 尤其是当选择自动化仪器时,仪器应用程序明确地说Current instrumentation disallows attach
。关键是要意识到在模拟器中运行的应用程序在主机系统中可以看作是自己的进程,因此直接从GDB附加工作效果很好。这些说明适用于Snow Leopard 10.6.8上的XCode 4.2(4C199):
通常在仪器中开始测试(直接来自Instruments,或者来自Xcode 4的Product -> Profile
。选择任何模板和脚本来进行自动化测试。
回到Xcode,在菜单Product -> Attach to Process
下,您应该看到您的iOS应用程序,按名称列出,以及主机上的所有其他应用程序。事实上,它很可能会首先列在标题Likely Targets
下。
如果看不到,请选择View -> Debug Area -> Show Debug Area
,以便查看gdb控制台。
点击暂停按钮(Product -> Debug -> Pause
)以中断您的程序。设置断点,照常检查。
接下来的问题是:为什么我在调试器控制台中看不到正常的NSLog()
输出?
您的应用已将自己绑定到控制台输出流,因此查找其输出的最简单位置是在OS X控制台应用(/Applications/Utilities/Console.app
)中,并在DATABASE SEARCHES -> All Messages
下查看。