使用iOS乐器启动应用程序是不可靠的

时间:2013-10-08 00:24:37

标签: ios macos ios7 instruments xcode-instruments

我使用以下命令在设备(不是模拟器)上启动我的iOS应用程序(已经安装了应用程序)。

instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          LPSimpleExample-cal \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

有10次中有6次正在工作。如果出现错误,我会收到以下消息:

2013-10-07 16:45:51.553 instruments[9891:1207] unable to locate CFBundleIdentifier for path: LPSimpleExample-cal
2013-10-07 16:45:51.555 instruments[9891:1207] Recording cancelled : At least one target    failed to launch; aborting run
Instruments Trace Error : Error Domain=com.apple.instruments Code=1 "Error Starting   Recording" UserInfo=0x7faccbef8fa0 {NSLocalizedDescription=Error Starting Recording,   NSLocalizedRecoverySuggestion=At least one target failed to launch; aborting run}
Instruments Trace Error : Failed to start trace.


对我来说,看起来仪器有一个错误。我试图在不同的情况下启动应用程序超过100次,我无法分析错误模式。设备崩溃日志说:

Process:         DTMobileIS [34956]
Path:            /Developer/Library/Daemons/DTMobileIS
Identifier:      DTMobileIS
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  lockbot [34938]
Date/Time:       2013-10-07 15:29:05.474 -0700
OS Version:      iOS 6.1.3 (10B329)
Report Version:  104    
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000

异常类型EXC_BAD_ACCESS (SIGSEGV)表示已访问的对象已被释放。 SIGSEGV是一个分段错误,这意味着您正在尝试访问无效的内存地址。参考:Exception Types in iOS crash logs

我还尝试指定完整的应用程序路径或完整的bundleIdentifier,而不是使用bundleIdentifier:

# with full app path
instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          /Users/mj/Desktop/apps/LPSimpleExample-cal.app \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

# with full bundleIdentifier
instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          /Users/mj/Desktop/apps/LPSimpleExample-cal.app \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

配置详情

  • 仪器版本:5.0(51166)
  • XCode版本:5.0(5A1413)
  • 设备类型:iPhone 5 - 6.1.3,iPhone 5C - 7.02,iPhone 5S - 7.0.2

是否有任何其他信息,在哪些情况下乐器无法在设备上启动应用或何时收到错误消息unable to locate CFBundleIdentifier for path: LPSimpleExample-cal

2 个答案:

答案 0 :(得分:0)

你是否正在和詹金斯一起使用Calabash?

  

有任何更多信息,在这种情况下,文书可以在设备上启动应用程序,或者>什么时候收到错误消息无法找到路径的CFBundleIdentifier:   LPSimpleExample-的

我在Jenkins上使用Calabash时遇到了问题,帮助我解决的问题是在应用程序文件夹(有xcodeproj)中启动乐器(calabash)。不要忘记在此文件夹中复制构建的应用程序

如果我不回答这个问题,请原谅。

答案 1 :(得分:0)

尝试在连接到服务器主机的iDevice上使用Xcode Server控制的仪器运行iOS应用程序时出现此问题。但是,该应用程序之前从未安装在目标iDevice上。我只能猜测错误信息

instruments ... unable to locate CFBundleIdentifier for path: ...

实际上指的是iDevice的文件系统(该应用程序不存在的地方),尽管错误消息报告了Xcode Server主机的文件系统中的路径。在我使用我的开发机器在目标设备上手动安装应用程序之后,服务器主机上的错误消息消失了,仪器再次运行。

我的看法是Xcode Server(和/或乐器?)的错误消息非常糟糕。当你收到像这样的错误消息时,谁需要敌人?