3

我有一个应用程序,我正在尝试使用霰弹枪方法自动调试(长时间随机触摸该应用程序)。我目前正在使用 UIAutomation 和这个脚本:

var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();

target.delay(2);

window.tapWithOptions( { x:160.0, y:370.0 } );

target.delay(5);

for(i=0;i<=100000;i++)
{
    xPoint = Math.floor(Math.random()*319+1)
    yPoint = Math.floor(Math.random()*479+1)
    window.tapWithOptions( { x:xPoint, y:yPoint } );
}

这可行,但不幸的是,当它最终崩溃时,我没有调试信息可以让我知道原因,无论如何我可以将 XCode 调试器与这种自动化联系起来吗?

4

1 回答 1

6

首先,如果您不介意无耻的插件,您可能会发现我的UI AutoMonkey项目很有用。它是一种工具,可以随机生成具有各种可配置性的事件,以执行您所谓的“shotgun”测试。

因此,对于您的问题,有可能让 Instruments 在崩溃发生时中断。它没有使用完整的调试器,但通过使用 Allocations 工具,我们可以告诉它启用 NSZombie 检测。

打开自动化模板后,确保应用程序已关闭且未记录跟踪。打开仪器库并将分配仪器拖到时间线中。单击该仪器上的“i”并确保选中“启用 NSZombie 检测”复选框,如下所示:

启用 NSZombie 检测

然后,运行您的应用程序并进行自动化测试,如果它因内存问题而崩溃,您将看到分配工具显示如下弹出窗口:

寻找僵尸

单击弹出窗口中的小箭头,您将跳转到触发僵尸的位置。崩溃时的堆栈位于右侧边栏中。您应该能够双击该堆栈中的任何点并查看发生内存崩溃的 Objective C 代码。有一些很棒的WWDC 视频介绍了如何使用分配工具。我建议也检查一下。

于 2012-11-20T06:04:52.867 回答