(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
我尝试比较在第一次(成功)运行之前和之后正在运行的进程 usingps
以及在 using 之前和之后打开了哪些文件/管道lsof
,但我找不到任何可以说明为什么它不会运行多次的信息。
该错误似乎表明仪器中的自动化仪器正在拒绝该purpose:Trace
命令,因此我尝试删除输出跟踪目录(以防自动递增的文件名导致问题),我尝试使用不同的模板运行仪器在运行之间查看这是否清除了阻止它的任何东西,但每次重新启动时我不能让它工作不止一次。
我怀疑自动化仪器或仪器使用的共享库中有一些无效状态。我需要一种从命令行重置此状态的方法,以便我可以在 CI 服务器上可靠地运行自动化测试。
有没有办法比较之前/之后加载哪些共享库并卸载它们?有没有人对可能持续存在的内容以及如何重置它有任何其他想法?