问题标签 [xcode-instruments]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1159 浏览

iphone - 通过自动化脚本在仪器 iOS 标准输出上自定义日志

我正在使用仪器 CLI 自动化我的测试。

现在,一旦我的应用程序中的某些特定操作完成,测试需要启动另一个进程。

即假设应用程序确实

singin --> 创建账户 --> 发布更新 --> singout

注销完成后,我想为我的应用程序拍摄内存快照,为此我将使用 top/ps 命令。

我想要做的是,在 singout 操作完成后在输出上记录一些特定的内容。例如“唯一字符串.......单出完成......唯一字符串”

另一个脚本将继续检查日志的输出并查看该字符串是否出现,并在出现时启动其他进程。

现在的实际问题是,是否会在我的自动化 javascript 中将 console.log(string) 放入仪器的标准输出中?如果现在我可以使用什么命令(或 API)在仪器 CLI 的 stdoud 上拥有自定义日志?

0 投票
1 回答
879 浏览

c# - MonoDevelop 调试器崩溃,没有错误消息,使用 Dijkstra 的算法和 2D 数组

我正在使用 C# 和 MonoDevelop 在 Monotouch 中制作 iOS 游戏。我有一个非常奇怪的崩溃。

背景信息:制作 2D 战争游戏。我已经实现了Dijkstra 的算法来计算从源到目的地的最短路径,中间有对象(例如:从这里到那里,但自动绕过汽车/树木/建筑物/或任何挡路的东西)。我的崩溃似乎与我为这个 Dijkstra 算法的实现创建的二维字节数组有关。如果您从未听说过 Dijkstra 的算法,请查看此图片http://en.wikipedia.org/wiki/File:Dijkstras_progress_animation.gif

基本上,我的2D 数组中的节点越多,士兵在战场上的动作就越详细。如果我在二维数组中使用 2,400 个节点,则一切正常/加载正常。但是,如果我将节点数增加到 4,266 以获得更详细的坐标,则程序在计算节点距离时会崩溃。它在崩溃之前完成了大约 30%。

有关崩溃的更多详细信息: 它仅在我使用 Debug/iPhone 模式或 Release/iPhone 模式时才会崩溃。当我使用调试/iPhone 模拟器时,它工作正常。还有一点需要注意的是,当我构建应用程序并使用 Debug/iPhone 模式将其传输到我的手机时,然后停止调试器,打开 XCode Instruments,它工作正常!我不知道为什么它可以在模拟器和 XCode Instruments 中工作,但不能在 Monodevelop Debug/iPhone 模式下工作。XCode Instruments 是否正在做一些“修补”问题的事情?还是 MonoDevelop 的调试器正在做一些事情来“破坏”程序?

这是在 XCode Instruments 中运行的程序的屏幕截图:

让我解释一下您在屏幕截图中看到的内容。我的应用程序被称为“战争游戏”。查看时间线,CPU 使用率约为 100%,从大约 2 秒到大约 35 秒。当 CPU 使用率下降到零时,它就完成了加载。因此,加载 2D 节点数组并用距离填充它们实际上花了大约 33 秒。

请记住,在这种情况下,崩溃有 4,266 个节点,这意味着 2D 数组是一个字节 [4266, 4266] 数组。所以这是二维数组中的 18,198,756 个字节。并且在 XCode Instruments 运行时加载成功,在 MonoDevelop 的 Debug/iPhone Simulator 中运行时加载成功。但在我的 iPhone 4s 上以 Debug/iPhone 模式运行时,它会崩溃且没有错误消息。从屏幕截图中可以看出,此应用程序的内存使用量约为 60.73MB。

在没有崩溃的实例中,有 2,400 个节点,这意味着 2D 数组是一个字节 [2400, 2400] 数组。所以这是 2D 数组中的 5,760,000 字节。那个在任何地方都工作得很好。

问题显然是,当我将节点数增加到大约 4,266 或更多时,程序崩溃了。但我没有收到错误消息,它只是在加载时突然停止...... 这可能是垃圾收集问题吗? 你会认为我会收到一条错误消息吗? 这可能是“内存不足”问题吗? 但是当它使用 XCode 的 Instruments 加载时,它说我只使用了 60MB,而且我之前在这个应用程序中使用了多达 150MB 作为测试,所以我知道在它崩溃之前我至少可以达到 150MB 的内存使用量“内存不足错误”。

这是 XCode Instruments 的内存分配截图 这是 XCode Instruments 的内存分配截图

这是 XCode Instruments 的内存泄漏页面截图 这是 XCode Instruments 的内存泄漏页面截图

0 投票
2 回答
582 浏览

instruments - 将 .trace 文件保存到其他位置

我正在从命令行运行仪器。在我的命令中,我确实使用指定了输出路径

但是,保存到上述位置的文件是 plist 文件。.trace(即instrumentscli14.trace)文件会自动保存到我保存脚本的文件夹中。

有谁知道有没有办法将 .trace 文件保存到自定义位置?

谢谢!

0 投票
1 回答
798 浏览

ios - UIActivityViewController 内存泄漏

我正在使用以下代码(使用 ARC)呈现 UIActivityViewController:

使用仪器“泄漏”在 iphone 模拟器上运行程序。呈现视图并单击取消后:在以下行出现泄漏(100%):

我究竟做错了什么?

0 投票
1 回答
236 浏览

ios - 使用 Xcode Instruments 在指针处查看非僵尸对象历史记录

我目前正在使用 Instruments 调试“发送到已释放对象的消息”错误。我可以通过“僵尸消息”对话框访问故障对象的历史记录。

我想在运行时找到一个类似的对象,它被正确分配/解除分配并且不会失败,并检查该对象的历史以比较调用树的样子。

有什么办法吗?我可以打印我想要检查的对象的指针位置,但是有什么方法可以让我使用指针位置信息访问 Instruments 中该对象的历史记录?

使用加载的对象NSKeyedUnarchiver似乎由于解码时的过度释放问题而失败,而不是以这种方式创建的对象是可以的。

0 投票
1 回答
582 浏览

iphone - iPhone应用程序上的脏尺寸

如何在 iPhone 应用程序上最小化脏大小?我发布了我的缓存图像,但没有最小化脏大小。有人有更多提示吗?

谢谢!

0 投票
1 回答
394 浏览

ios - 同时调用多个 ViewController 实例会导致应用在 AppDelegate 中崩溃

我在做什么 ?

  1. 我目前正在为我的应用程序在没有互联网的情况下进行防崩溃。
  2. 我已经安装了Little snitch来暂时禁用网络访问。
  3. 发出请求并且如果响应为零,则触发“可达性测试”。下面代码中的 ReachabilityController 只是 Apple 提供的 Reachability 类的包装器。

此代码在其他地方有效吗?

该应用程序充满了在线请求,我在其他视图控制器中从未遇到过这个问题。如果互联网不可用,它会显示一条描述状态的漂亮小消息。

错误发生在哪里

应用代理

错误

* * * -[ReachabilityController respondsToSelector:]:消息发送到已释放实例 0x12a71320

ReachabilityController 显示一个描述错误状态的 UIAlertView。警报视图出现大约一秒钟,然后应用程序崩溃。

调试和仪器?

NSLog(@"%p", 可达性) ; 记录与错误中相同的地址。0x12a71320。不用说,这个地址在每次运行时都会有所不同。

Instruments 中的 Zombies 模板也在 Reachability Controller 中指出。

下图中“责任”部分的 4 行白色补丁包含应用程序的名称。

僵尸对象

我期待什么?

老实说,我不知道这种行为背后的原因。我相信它必须非常基本。

与现在的本地声明相比,我是否必须声明一个属性以保留“ReachabilityController”?

代码

发生崩溃的片段。

可达性控制器.h

可达性控制器.m

更新:

更改问题的标题

只是最近的一个发现。有 3 个实例从在线服务器请求数据。由于无法上网,这三种方法几乎同时要求进行可达性测试。这三种方法都有与上面类似的方法声明。这三种方法都使用如下所示的“本地声明”来触发测试。

0 投票
2 回答
257 浏览

objective-c - 如何找出实际内存使用情况

我想通过仪器分配找出我的应用程序的实际内存使用情况这是我的 2 张图片

#1

#2

第一次运行没有任何过滤器和实时字节:14.79 MB

第二次使用过滤器 CF、Malloc、CG、CA 类型和实时字节运行:40.94 KB

所以哪一个是真正的内存使用。如果没有比如何找出这个,我不知道这是否重要,但一切都在模拟器上运行

0 投票
4 回答
4111 浏览

instruments - UIAutomation logElementTree() 返回 UIAElementNil

当我们这行代码到 Instruments UIAutomation 中的 logElementTree() target.frontMostApp().mainWindow().logElementTree();

结果返回是UIAElementNil

即使当我录制脚本并点击屏幕时,唯一被录制的行是target.frontMostApp().tap();

0 投票
1 回答
437 浏览

javascript - 我可以将数据从 excel 表导入到仪器 UIAutomation 中吗?

我想为有两个字段的屏幕编写脚本,我只想测试这些字段的值的不同可能性,它是否会导航到进一步的屏幕。但是要输入这些字段的数据组合太大。那么我可以从已经存储了我的数据的 excel/任何其他文件中导入数据吗?