标签: instruments

iPhone:OpenAL和AudioToolbox泄漏

我使用OpenAL在我的应用程序中播放声音.当我使用Instruments工具测试它时,它会发现泄漏:
LeakedObject = GeneralBlock-512
Size = 512 Bytes
Responsible Library = AudioToolbox
Responsible Frame = AU3DMixerEmbeddedInputElement :: Initialize()

堆栈跟踪:

   0 libSystem.B.dylib malloc
   1 libstdc++.6.dylib operator new(unsigned long)
   2 libstdc++.6.dylib operator new[](unsigned long)
   3 AudioToolbox AU3DMixerEmbeddedInputElement::Initialize()
   4 AudioToolbox AU3DMixerEmbedded::SetProperty(unsigned long, unsigned long, unsigned long, void const*, unsigned long)
   5 AudioToolbox AUBase::DispatchSetProperty(unsigned long, unsigned long, unsigned long, void const*, unsigned long)
   6 AudioToolbox AUMethodSetProperty(void*, unsigned long, unsigned long, unsigned long, void const*, unsigned long)
   7 OpenAL OALContext::InitializeMixer(unsigned long)
   8 OpenAL …
Run Code Online (Sandbox Code Playgroud)

iphone memory-leaks instruments

7
推荐指数
1
解决办法
3274
查看次数

Xcode和ARC调试问题(跳过dealloc)

我花了一些时间来调试ARC和自定义dealloc函数的一个奇怪的问题.

  1. 我是继承NSOperation类的
  2. 我为此操作设置了完成块
  3. 该操作由非常扁平的对象(没有方法,自动ivars,两个强属性)的强属性引用,可以调用此对象DataRequest
  4. 遵循所有准则,完成块仅使用对本地对象的弱引用(包括操作本身)
  5. 编译器和分析器都不会产生任何问题
  6. DataRequest保持对我生成的操作的唯一引用,并在操作完成块中销毁.它总是被破坏(它dealloc总是被执行)
  7. 我的操作有一个习惯dealloc.我只有一个NSLog调用.

......问题是:

如果我在调试器中运行它,dealloc中的断点永远不会被命中,日志消息永远不会出现.主要是我以为操作漏了.

如果我在仪器中运行它,一切都很好,系统控制台打印消息,Allocations仪器报告从正确的堆栈快照中释放的操作,包括自定义dealloc.没有检测到泄漏.

我100%确定我使用相同的编译器设置进行调试和分析.

最后最令人困惑的事情:如果我创建了一个自定义版本[DataRequest dealloc]并且我付诸实践self.operation = nil;- 即使从调试器中也可以正常工作.

有没有人提示某些编译器链接器选项试图看到一些区别?这可能是Apple工具中的错误(我们所有人都在为我们自己的错误指责一条大鱼,对吧?)

......是的,我尝试过使用GDB和LLDB.结果是一样的 - 可能表明什么.

我试图创建一个简约的样本,但它只是工作(确实);)

谢谢

debugging xcode instruments dealloc automatic-ref-counting

7
推荐指数
1
解决办法
3632
查看次数

无法获得UIAutomation iOS UILabel值

我想获得的价值"HELLO"UILabel在iPad模拟器中.我已启用辅助功能并将标签设置为"Label Access".但是当我调用时target.logElementTree(),名称和值都被设置为"LabelAccess",并且就apple文档而言,值字段应该包含设置的字符串(在本例中"Hello").有人知道解决这个问题吗?

PS:我使用的是最新的iOS SDK和Xcode. Apple Stack Exchange

target.logElementTree()的输出;

iPad屏幕

辅助功能标签

xcode instruments ui-automation ios ios-ui-automation

7
推荐指数
1
解决办法
3374
查看次数

您的mac os x启动磁盘没有更多可用于应用程序内存的空间

因此,在运行Objective-C应用程序大约8小时后,最终我的机器将显示此错误消息.但是在使用仪器24小时后,它只完成了应用程序在没有仪器的情况下8小时内可以完成的操作的大约1%.

我的应用程序基本上采用输入几何并创建一个导航网格.

我的问题:我怎样才能找出问题所在?我肯定在我的应用程序的某个地方,我要求记忆,永远不要释放它.我运行了分析,发现了一个漏洞,但并不重要,我已修复它.

我现在正在运行仪器进行分配/泄漏但是在16分钟后我没有看到任何明显的东西(我会让它继续下去).

以下是迄今为止所处位置的快照: 仪器

任何人对我如何调试这个有任何想法?我希望能够运行大约20个小时,以便完成它不可避免地死亡:/

提前致谢!

objective-c instruments

7
推荐指数
1
解决办法
2364
查看次数

如何在iOS应用程序中找到内存压力的来源

我在设备上调试应用程序.它完美地工作了一段时间,然后停止并显示错误消息"App因内存压力而终止".没有错误或崩溃日志.

为什么会这样?我该如何解决这个问题?我的应用程序在运行时使用10到30 mb ram.那是很多吗?

更新:使用乐器后,我得到了这个..任何人都可以解释内存分配????

![]

更新:我试过仪器,发现泄漏.我有一些这样的事情

我不明白它是什么意思,以及如何解决这个问题????

memory instruments ios

7
推荐指数
1
解决办法
6812
查看次数

如何衡量在函数中花费的总时间?

我有一个实用功能,我怀疑它占用了应用程序执行时间的很大一部分.使用Time Profiler查看调用堆栈,此函数占用调用它的任何函数的大部分执行时间.但是,由于此实用程序功能是从许多不同的来源调用的,因此我无法确定总体而言,这是否是我的优化时间的最佳用途.

如何在程序执行期间查看在此函数中花费的总时间,无论是谁调用它?

为清楚起见,我想将所选条目与该函数的所有其他调用组合到一个条目中: Profiler日志

performance xcode instruments

7
推荐指数
2
解决办法
1万
查看次数

仪器在两个本地变量之间检测到泄漏

我只是在玩泄漏并试图故意创造一个.所以,即使做这样的事情也很愚蠢:

class LeakingObjectA{

    var strongRefToB:LeakingObjectB?

    deinit{ print("LeakingObjectA deinit")}
}

class LeakingObjectB{

    var strongRefToA:LeakingObjectA?

    deinit{ print("LeakingObjectB deinit")}
}
Run Code Online (Sandbox Code Playgroud)

这对于科学目的来说很好,这创造了一个强大的参考周期.

现在didMoveToView我在内部声明局部常量并像这样发生泄漏:

override func didMoveToView(view: SKView) {

        let a = LeakingObjectA()
        let b = LeakingObjectB()

        a.strongRefToB = b

        b.strongRefToA = a
    }
Run Code Online (Sandbox Code Playgroud)

另一个场景转换后,现场的deinit正确调用,但是deinitsab实例并不实际调用.

另外我说泄漏,因为这实际上是在仪器中检测到泄漏:

在此输入图像描述

现在,如果我将这两个本地变量声明为场景的属性,则仪器检测到泄漏之间存在差异:

class GameScene:SKScene {

    let a = LeakingObjectA()
    let b = LeakingObjectB()

    //...later in didMoveToView method I make a strong reference cycle like from the …
Run Code Online (Sandbox Code Playgroud)

memory-leaks instruments ios sprite-kit swift

7
推荐指数
1
解决办法
178
查看次数

将NSAttributedString分配给UILabel很慢?

我一直在尝试解决毛刺表视图滚动性能问题.通过Instrument的Time Profiler运行它表明花费了相当多的时间将NSAttributedString设置为UILabel.这是一个已知的问题吗?如果是这样,有解决方法吗?

我看到一些报道称在iOS8上创建NSAttributedString的速度非常慢,并且在iOS9上有所改进,但它是否也将它设置为包含UI元素的速度慢?在iOS 8下,NSAttributedString性能更差

下面是我的分析屏幕截图.请注意,视图模型不会动态创建属性字符串,因此您看到的成本完全来自赋值.当然,UILabel可以执行昂贵的操作,我不知道如何绕行.

在此输入图像描述

我感谢任何帮助.

instruments uikit nsattributedstring uilabel ios

7
推荐指数
1
解决办法
491
查看次数

Xcode Instruments 8.3显示设置按钮丢失

在最新版本的Instruments 8.3中,显示设置按钮已被删除,并由文件 - >记录设置对话框替换.

使用分配工具时,我现在无法再激活自动快照,因为该选项已从右侧面板中消失,而记录选项对话框仅显示分配工具的值,但不显示vm跟踪器的值.记录选项对话框

有人知道选项被移动到哪里了吗?

非常感谢

xcode instruments ios

7
推荐指数
1
解决办法
1060
查看次数

Xcode仪器不运行,因为此错误"目标设备服务太旧"

当我尝试运行仪器核心图形测试时,我发现这样的错误"目标设备服务太旧了"

在此输入图像描述

xcode instruments

7
推荐指数
1
解决办法
1934
查看次数