如果我打开仪器并选择标准应用程序(例如邮件或MS Word),则没有问题.如果我在Xcode中并且我转到产品>配置文件(或按Cmd+ I),它将启动Instruments,允许我选择模板,并加载标准屏幕.然后向下箭头开始向右追踪,iOS模拟器启动程序.但是,仪器中没有绘制任何内容.无论应用程序在做什么,它都不会显示任何变化.我无法点击仪器中的任何内容:没有菜单,无法停止录制,无法打开标签等.
我随机发现,如果我点击Cmd+ Tab,乐器将开始正常运行.这对我来说真的很奇怪.要么它是一个错误,要么是我对如何操作仪器的一个漏洞.
很难跟踪iPad应用程序中的崩溃.这个困难的真正原因是当应用程序失败时没有错误或堆栈跟踪.它就像Keiser Soze一样消失,"就像那样,噗.他走了."
我已经在模拟器和设备上复制了崩溃.设备日志为零,控制台中没有任何内容,等等.
我知道在崩溃期间,一些CoreGraphics
操作正在后台线程中发生.通常,三个左右的NSOperations正在踢一些图像混合.
混合包含CGContext*调用(DrawImage,SetBlendMode,SetAlpha等).NSOperation回调主线程中的委托来处理图像并将其设置为UIImage
,因此它不应该是UI主线程冲突,但此时我不打算任何折扣.
我是否缺少一些Xcode技巧来追踪究竟发生了什么?或者至少可以更好地了解问题所在?
编辑我已经在仪器中运行应用程序跟踪内存使用情况,看到它在2MB左右稳定稳定.所以,不要认为这是一个记忆问题.但经过考虑,这块岩石稳定2MB似乎异常低落.有没有机会仪器没有获得CoreGraphics分配?
我在我的应用程序中使用了一个库UICollectionView
.细胞大小约为70,70.我使用ALAssets
从ALAssetLibrary
我在其中已经存储在列表中的画廊.
我使用通常的模式来填充单元格:
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
mycell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
mycell.imageView.image = [[UIImage imageWithCGImage:[alassetList objectAtIndex:indexpath.row] thumbnail]];
return mycell;
}
Run Code Online (Sandbox Code Playgroud)
我的画廊滚动波涛汹涌.我不明白为什么会这样.我已经尝试添加一个NSCache来缓存缩略图(想想可能创建图像很昂贵),但这对性能没有帮助.
我希望用户界面像股票应用程序一样黄油.
我现在怀疑它可能是某种东西UICollectionViewCell prepareForReuse
可能会阻碍dequeueReusableCellWithReuseIdentifier
方法,但使用我无法找到的工具.
还有其他可能造成这种情况的事吗?是否有一种"更快"的方式以更快的方式UICollectionViewCell
为dequeue
它们做准备?
objective-c ios xcode-instruments uicollectionview uicollectionviewcell
有没有人知道我有什么要检查我的应用是否会冻结?我的意思是,我可以在iPad屏幕上看到该应用,但没有按钮响应.我点击按钮时尝试调试代码,但我还没有看到任何东西.我正在阅读有关仪器工具的内容; 具体如何使用它们?
有谁能够帮我?我只需要解释如何使用这些工具.
我跟了这个问题.所有乐器完美地工作,但泄漏的仪器不能正常工作最终给出错误我想用Leak Instrument
,但它给我的错误是这样: - 发生错误试图捕捉泄漏数据,错误检索泄漏信息.,图像也在下面给出.请帮助我,提前谢谢
我刚开始玩Xcode 4,发现无论我如何在项目中设置调试符号,Instruments都拒绝显示与我的代码对应的堆栈跟踪项的源代码行.仅显示十六进制偏移量并将我的可执行文件标识为拥有模块.启用"源位置"也是一个空白.即使对于Xcode生成的骨架OpenGL ES项目(文件→新建→新建项目...→iOS→应用程序→OpenGL ES应用程序),也会发生这种情况.
这个问题只发生在仪器中(到目前为止我尝试过CPU和OpenGL跟踪).Gdb很好地选择了调试符号.
我是否必须做一些特殊的事情来查看Instruments中堆栈跟踪的源代码,或者这是Xcode 4中的错误?
到目前为止,我已经:
Debug Information Format
从DWARF with dSYM File
到DWARF
.Strip Debug Symbols During Copy
从Yes
到No
.我目前正在通过bash脚本使用Instruments来启动命令行界面以启动Automation插件的运行.
使用4.2,这很好用,但是随着Xcode 4.3的升级,我现在被提示让授权用户"分析其他进程".即使授予了正确的凭据,也不会对用户进行实际身份验证.我收到以下错误:
Failed to authorize rights (0x20) with status: -60007.
2012-02-27 19:30:37.232 instruments[54151:1c03] Failed to connect to local pid watcher service: (os/kern) failure
Run Code Online (Sandbox Code Playgroud)
即使身份验证失败,自动化插件也会执行,但这需要我的脚本让物理保姆输入凭据,这在很多方面都会破坏这些命令行运行的目的.是否可以将用户详细信息添加为参数?或者是否有其他方法可以跳过此提示而无需按键人员?
- 编辑 -
当您尝试首次从GUI运行UIAutomation测试时,会出现此授权对话框.
- 编辑 -
在GUI中应答授权对话框后,提示将停止显示在命令行上.然而,这种解决办法似乎不是一个"答案".
instruments ios xcode-instruments ios-ui-automation xcode4.3
从这些从乐器拍摄的屏幕中可以看出,Allocations认为我的应用程序(Ongo)仅使用7.55 MB的内存,而Memory Monitor则表示53.30.此外,自由系统内存与应用程序使用的内存量几乎没有任何关联.有谁知道为什么这两个工具之间存在如此大的分歧?另外,是否可以找到低系统内存的来源或如何防止它快速耗尽?我的应用程序似乎没有泄漏内存,但不知何故,它耗尽了系统资源.
谢谢
我正在使用Apple提供的UIAutomation - > Xcode - > instruments.我有我的Javascripts和整个自动化使用仪器命令行基础设施运行.
我还有一项额外的任务是在先前版本的模拟器(iOS 6.0,5.1,5.0,4.3.2)上运行自动化,以提供更好的覆盖.
但我不知道如何指定哪个版本的iOS模拟器可供选择.默认情况下,它总是选择lates iOS模拟器.
我试过以下的事情:
MacOSX Xcode Instruments非常适合分析本机代码.但是,我的callstacks中还有很多Python调用.我可以以某种方式使仪器具有Python感知能力吗?
我能想到的一个解决方案是,当它看到一些PyEval_EvalFrameEx
框架时,它在其局部变量/参数中查找以分隔不同的Python调用并向我显示一些调用信息.
我不是在问一个Python分析器.我想描述我的本机代码.但是在这个本机代码分析中,我想添加一些进一步的智能来分析和翻译Python堆栈帧.
ios ×6
instruments ×3
xcode ×3
debugging ×2
crash ×1
ipad ×1
iphone ×1
macos ×1
memory-leaks ×1
objective-c ×1
python ×1
xcode4 ×1
xcode4.3 ×1
xcode8 ×1