自动化仪器拒绝命令后如何重置仪器

时间:2012-09-25 16:30:25

标签: instruments ios-ui-automation

(Xcode 4.5)

从命令行运行仪器时,它第一次工作但直到我重新启动后它才会再次运行。

Instruments的详细输出包括:

Instruments : Loading template 'file://localhost/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate'
Instruments : Setting Instrument Trace Command : Instrument Command (purpose:Idle; output destination:file://localhost/Users/xxxxx/instrumentscli0.trace)
Instruments : Trace Command Recognized
Instruments : Instrument 'Automation - MyProject' rejected command 'Instrument Command (purpose:Trace; output destination:file://localhost/Users/xxxxx/instrumentscli0.trace)' for target 'Executable (name:MyProject; arguments:)'
Instruments : Instruments Rejected Command
Instruments Trace Error : Failed to start trace.

我用来运行乐器的命令行是这样的(为清晰起见,分成多行):

instruments -v -w <DeviceID>
-t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate
/Users/xxxxx/dev/MyProject/build/Debug-iphoneos/MyProject.app
-e UIASCRIPT /Users/xxxxx/dev/MyProject/UIAutoTests/some_test.js

我已经尝试使用ps比较在第一次(成功)运行之前和之后运行的进程以及在使用lsof之前和之后打开了哪些文件/管道,但我找不到任何建议为什么它不会运行不止一次。

该错误似乎表明仪器内的自动化仪器拒绝purpose:Trace命令,因此我尝试删除输出跟踪目录(如果自动递增的文件名导致问题),我'尝试在运行之间运行具有不同模板的仪器,以查看是否清除了阻止它的任何内容,但是每次重新启动时我无法使其工作多次。

我怀疑自动化仪器或仪器使用的共享库中存在一些无效状态。我需要一种从命令行重置此状态的方法,以便我可以在CI服务器上可靠地运行自动化测试。

有没有办法比较之前/之后加载的共享库? 有没有人对可能存在的内容以及如何重置它有任何其他想法?

2 个答案:

答案 0 :(得分:1)

尝试下载Xcode 4.4.1(iOS开发中心)并使用其仪器4.4(4445)。此版本适用于我的所有设备。

仅供参考,当我使用4.5+甚至4.6DP4时,只有iOS6设备正常响应;其他人会失败,与你的信息相同。尝试一下,如果4.4不能正常工作,甚至可能是4.3.3。

答案 1 :(得分:0)

对于其他有这个问题的人,我会解释什么对我有用,以及我是如何解决这个问题的。

我执行了ps命令以查看正在运行的进程。我发现仪器还在运行。然后我做了killall instruments并杀死了乐器进程。然后我做了我的乐器命令,之后它完美无缺。