2012-09-25 9 views
6

(Xcode 4.5)Cómo restablecer Instrumentos después de Automatización Instrumento rechazado un comando de

Cuando se ejecuta instrumentos de la línea de comandos funciona la primera vez, pero entonces no va a correr de nuevo hasta después de que reanude.

La salida detallada de instrumentos incluye lo siguiente:

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. 

La línea de comandos que estoy usando para ejecutar instrumentos es esto (dividida en varias líneas para mayor claridad):

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 

tengo intenté comparar qué procesos se estaban ejecutando antes y después de la primera ejecución (exitosa) utilizando ps y qué archivos/tuberías se abrieron antes y después de usar lsof, pero no puedo encontrar nada que sugiera por qué no se ejecutará más de una vez.

El error parece sugerir que el instrumento de automatización dentro de los instrumentos rechaza el comando purpose:Trace, por lo que he intentado eliminar el directorio de seguimiento de salida (en caso de que el nombre del archivo aumente automáticamente estaba causando un problema), intenté instrumentos con una plantilla diferente entre ejecuciones para ver si esto borra lo que sea que lo esté bloqueando, pero no puedo hacer que funcione más de una vez por reinicio.

Mi sospecha es que hay algún estado no válido en el instrumento de automatización o en una biblioteca compartida utilizada por los instrumentos. Necesito una manera de restablecer este estado desde la línea de comandos para que pueda ejecutar las pruebas automáticas de manera confiable en un servidor de CI.

¿Hay alguna forma de comparar qué bibliotecas compartidas se cargan antes y después y descargarlas? ¿Alguien tiene alguna otra idea de lo que podría persistir y cómo restablecerlo?

+1

Todavía estoy viendo esto 3 meses después. Incluso probé 4.6p4. ¿Tiene algún nuevo conocimiento o hacks? Esto es frustrante para mí porque funciona perfectamente en todos los dispositivos iOS6 excepto en un iPod touch con iOS5 (intencionalmente) en él. Relacionado: http://lists.apple.com/archives/xcode-users/2012/Sep/msg00187.html –

Respuesta

1

Intente descargar Xcode 4.4.1 (centro de desarrollo de iOS) y use sus instrumentos 4.4 (4445). Esta versión funciona para todos mis dispositivos.

FYI, cuando uso 4.5+, o incluso 4.6DP4, solo los dispositivos iOS6 responden normalmente; otros fallarían con el mismo mensaje que el tuyo. Pruébalo, tal vez incluso 4.3.3 si 4.4 no funciona bien.

0

Para cualquier otra persona que tenga este problema, explicaré qué funcionó para mí y cómo resolví esto.

Hice el comando ps para ver qué procesos se están ejecutando. Encontré que los instrumentos todavía estaban funcionando. Luego hice killall instruments y eso mató el proceso de los instrumentos. Luego hice mi comando de instrumentos y funcionó perfecto después de eso.

Cuestiones relacionadas