关于gdb:如何使UIAutomation,Simulator和Xcode Debugger同时运行?

How to get UIAutomation, Simulator, and Xcode Debugger Running at the same time?

谁能指出我有关如何使Instruments运行UIAutomation脚本并在模拟器中运行调试器的情况下启动iPhone应用程序的文档?

约束:
我只有iPhone 3g硬件可以通过UIAutomation进行测试并针对该设备进行调试,但无法可靠地运行。
通常,只是运行测试脚本以确保一切都通过,但是现在存在一个奇怪的错误,该错误仅在UIAutomation脚本运行时才被触发(这是一件好事)。该错误不能在手动操作中复制。
似乎没有办法将Instruments UIAutomation附加到模拟器中已经在运行的进程。没有选择。
直接启动Instruments UIAutomation不会导致它以调试器启动。

我认为可以通过在Instruments编辑活动目标(环境变量,参数,工作目录)中配置一些命令行魔术来实现此目的,但是我没有找到魔术段落。

谢谢,
尼尔


这难倒我了一会儿,太 - 特别是当选择了自动化仪表以来,该仪器中的应用明确地说Current instrumentation disallows attach。关键是要意识到,在模拟器中运行的应用程序可以在您的主机系统中作为其自己的进程看到,因此直接从GDB进行附加可以很好地实现。这些说明适用于Snow Leopard 10.6.8上的XCode 4.2(4C199):

  • 按照常规方式在Instruments中开始测试(直接从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下查看。