我有一个应用程序,我正在尝试使用鸟枪法(长时间随机接触该应用程序)进行自动调试。我目前使用的是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调试器与这种自动化联系起来?
发布于 2012-11-20 14:04:53
首先,如果您不介意这个无耻的插件,您可能会发现我的UI AutoMonkey项目很有用。它是一个随机生成事件的工具,它具有各种可配置性,可以执行您所说的“鸟枪式”测试。
所以,对于你的问题,有可能让Instruments在崩溃发生的时候中断。它没有使用完整的调试器,但通过使用分配工具,我们可以告诉它启用NSZombie检测。
在自动化模板打开的情况下,确保应用程序已关闭,并且未记录跟踪。打开仪表库并将分配仪器拖动到时间线中。单击该仪器上的"i“,并确保选中"Enable NSZombie Detection”复选框,如下所示:

然后,使用自动化测试来运行你的应用程序,如果它因为内存问题而崩溃,你会看到分配工具显示一个弹出窗口,如下所示:

单击弹出窗口中的小箭头,您将跳到僵尸被触发的位置。崩溃时的堆栈位于右侧边栏中。您应该能够双击该堆栈中的任何点,并看到内存崩溃发生的Objective C代码。这里有一些很棒的WWDC videos,它们演示了如何使用分配工具。我建议你也去看看这些。
https://stackoverflow.com/questions/13465407
复制相似问题