标签: instruments

无法从Xcode运行仪器

我最近升级到了Snow Leopard,从那以后我很难运行Instrument来从Xcode中检测我的应用程序."录制"按钮将显示为灰色,并且没有任何反应.在Xcode的控制台中没有消息告诉我什么是错的.我曾经能够将它附加到处理或从仪器启动过程,所有这些都不再有效.

知道是什么导致了这个吗?

xcode instruments

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

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
查看次数

从Jenkins运行iOS UIAutomation测试

有一段时间了,我一直在尝试研究如何从Jenkins运行UIAutomation测试 - 每次运行构建时,它都构建良好,然后运行我的仪器命令(使用与此处详细相同的命令(可以使用仪器)使用命令行?)和jenkins只是挂起,整个机器都可以,当我查看活动监视器时,我可以看到使用2GB内存的仪器进程.

当我设置jenkins时,我原来是从一个隐藏的用户那里运行它 - 这提出了一些挑战,jenkins是一个deamon而无法访问窗口服务器.然后我决定将jenkins帐户更改为普通用户,登录并从命令行运行工具 - 这工作正常..但仍然没有运气从jenkins运行它.

我已经将jenkins帐户设置为开发人员 - 尽管没有管理员

请告诉我,如果还有其他任何我可以尝试的,或者如果有人有这个成功运行你的指导将非常感谢 - 谢谢

xcode instruments ios jenkins ios-ui-automation

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

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

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

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

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

![]

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

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

memory instruments ios

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

无法在Xcode 6.2工具中启动iOS7.1模拟器

在xcode 6.1.1中运行良好的代码现在无法在xcode 6.2中启动iOS 7.1模拟器(但适用于iOS 8.2 sim).

这是我正在使用的命令:

仪器-t Automation -w/Users/USER/Library/Developer/CoreSimulator/Devices/233D1DE0-8660-4D98-8E45-5E0794CF7366/Users/USER/Library/Developer/CoreSimulator/Devices/233D1DE0-8660-4D98-8E45-5E0794CF7366 /data/Applications/APPNAME/APPNAME.app -v -l 20

这是返回的错误:

仪器[2274:66214] - [UIAInstrument(UIAInstrument_Simulator)_startAgentForApp:withPID:]:警告:自动化仪器找不到sim工具.

该命令启动模拟器并简要显示应用程序的启动画面,然后转储.

有任何想法吗?

xcode instruments ios7

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

在Usage Comparion Xcode iOS9中的"其他进程"中内存不足

我的应用程序在具有0.5GB内存的设备上崩溃.但是,在Xcode中分析内存使用情况 - 它很少超过140MB.我用过仪器来检查泄漏,没有一个是重要的.

但是,当我运行我的应用程序时,"其他进程"使用的内存总是非常高.这是发射后的休息状态:

在此输入图像描述

我在代码的循环的每个循环中添加了1秒的延迟,并发现在每个循环中,"其他进程"每个对象增加大约3MB的内存使用量,直到在0.5GB设备上,它耗尽并崩溃.

在此输入图像描述

这个问题表明这些是使用该内存的其他应用程序,但我关闭了所有其他应用程序,其用法与我的循环代码直接相关.

什么可以在其他进程中使用内存,实际上是在我的应用程序中运行?为什么我的"其他进程"耗尽了这么多内存?

为了了解我正在做什么,我从Parse中提取数据,然后遍历返回的每个对象并从数据中创建SKNode子类对象.我将此节点添加到数组(供参考)和场景.这是我在主线程上做的代码,添加了延迟.NB线:

self drawRelationships:[_batches objectAtIndex:_index] forMini:_playerMini];
Run Code Online (Sandbox Code Playgroud)

是一个BFTask,所以异步.而且我将数组分成更小的批次,因此我可以看到增量内存使用量,因为每个批次都被绘制.如果我试图立刻绘制整个批次,OOM会立即发生......

- (void)drawNewRelationships
{
    _batches = [NSMutableArray array];
    _index = 0;

    [_playerMini fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) {
        [ParseQuery getNewRelationshipsForMini:_playerMini current:_miniRows.relationshipIds withBlock:^(NSMutableArray *newRelationships) {
            _batches = [self batchArrays:3 fromArray:newRelationships];
            _index = 0;
            [self drawBatches];
        }];
    }];
}

- (void)drawBatches
{
    if ([_batches objectAtIndex:_index]) {
        [self drawRelationships:[_batches objectAtIndex:_index] forMini:_playerMini];
        _index++;
        if (_index < [_batches count]) {
            [self performSelector:@selector(drawBatches) withObject:nil afterDelay:1];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该节点包含其他数据(几个数组,自定义对象),我尝试运行应用程序并删除所有数据.我试过在主线程和后台线程上运行.我尝试过使用BFTask来异步处理事情.我尝试的所有内容都以相同的行为结束 - 创建这些SKNode对象会在"其他进程"中占用内存,直到在低内存设备上崩溃.

值得注意的是,这种行为自iOS9以来才开始发生.

基本上,什么可以在"其他过程"中使用所有这些内存,我如何释放它?

更新 …

memory-management instruments parse-platform sprite-kit ios9

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

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

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

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
查看次数

JavaScriptCore 内存分析

我在一个创建多个 JSContext 的框架上工作。我已经通过覆盖维护对它们的引用的类中的“dealloc”方法来确认它们正在被释放。我还使用 Instruments 中的 Allocations 工具分析了我的应用程序,并确认在整个应用程序的生命周期中没有反复出现的内存堆栈。然而,这些 JSContext 的内存使用目前是一个争论点。

我基本上是想确认一些事情:

  1. 原生层和 JS 层是否有单独的堆?
  2. 如果有,Instruments 工具在查看“All Heap & Anonymous VM”时是否将两者都考虑在内?
  3. 如果没有,有没有办法使用 Instruments 来分析 JS 堆?
  4. 如果没有,使用真实设备分析 JS 堆的最佳方法是什么?

提前感谢您的任何见解。

memory-leaks heap-memory instruments ios javascriptcore

7
推荐指数
0
解决办法
606
查看次数

新的空iOS应用有数十个内存泄漏

在新的,从零开始的单视图iOS应用程序上使用泄漏仪器工具会报告23次泄漏。这似乎不正确-我错过了什么吗?重复运行会产生不同的泄漏计数,从16到35。重现步骤遵循此屏幕截图。

亚马逊样本ios应用程序登录时内存泄漏中发布了一个类似的未解决问题

仪器窗口的屏幕截图

我正在使用Xcode 10.2.1(10E1001); iOS 12.2(无论是否激活“显示”功能,模拟器和设备都显示泄漏)。

  1. 创建新鲜的单视图iOS应用。
  2. 在“方案”>“运行/调试”部分中,启用
    • 内存管理> Malloc涂抹
    • 日志记录> Malloc堆栈(仅实时分配)
  3. 运行产品>配置文件(?I)
  4. 第一次泄漏检查为绿色;等待第二个。
  5. 23个新的泄漏!(如上图所示。)

但是,除Instruments之外,Debug Navigator不赞成:

  1. 运行正常的调试会话
  2. 单击“调试”区域顶部的“调试内存图”。
  3. 调试导航器(如下)没有紫色感叹号(泄漏警报)。

Debug Navigator的屏幕截图

memory-leaks instruments ios

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

iOS:系统库的符号不适用于“iPhone 12(14.2)”

我正在尝试在 Instruments v12.2 中检查我的应用程序是否存在内存泄漏。但是,我看到一个警告Symbols for system libraries are available for "iPhone 12(14.2)"

我曾尝试使用不同的模拟器对其进行测试,但得到相同的警告,即使我在代码中明确添加了泄漏,也未显示任何泄漏。

我添加了一张图片以供参考。

在此处输入图片说明

xcode memory-leaks instruments ios ios-simulator

7
推荐指数
0
解决办法
214
查看次数