我有一个应用程序,我试图使用鸟枪方法自动调试(随机触摸应用程序很长一段时间)。我目前正在使用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调试器与这种自动化联系起来吗?
答案 0 :(得分:6)
首先,如果你不介意无耻的插件,你可能会发现我的UI AutoMonkey项目很有用。它是一个随机生成具有各种可配置性的事件的工具,可以执行您所谓的“霰弹枪”测试。
因此,对于您的问题,可能会让仪器在崩溃发生时突破。它没有使用完整的调试器,但通过使用Allocations仪器,我们可以告诉它启用NSZombie检测。
打开自动化模板后,请确保关闭应用程序并且未记录跟踪。打开仪器库并将Allocations仪器拖到时间线中。单击该仪器上的“i”,确保选中“启用NSZombie Detection”复选框,如下所示:
然后,使用自动化测试来运行您的应用程序,如果它因内存问题崩溃,您会看到分配工具显示如下的弹出窗口:
单击弹出窗口中的小箭头,您将跳转到触发僵尸的位置。崩溃时的堆栈位于右侧边栏中。您应该能够在该堆栈中的任何位置双击并查看发生内存崩溃的Objective C代码。有一些很棒的WWDC videos可以了解如何使用Allocations工具。我也建议你检查一下。