我正在开发一款应用,但只有在设备上才会出现错误;在模拟器中,一切似乎都很顺利。我已经向another question提出了确切的问题和一些代码,但是如果没有产生任何结果,我想了解更多关于如何调试(和修复) sort 问题。
答案 0 :(得分:1)
模拟器将代码运行为x86,而设备将其作为ARM运行。有时编译不会为两者提供相同的输出,但这只适用于你进入某些真正的低级别的东西。另一个问题是设备之间的性能差异很大 - iPad 2可能比MacBook Air更快地运行应用程序,而MacBook Air反过来会比iPhone 1更快地运行应用程序。如果您正在做任何资源密集型的事情,在设备上进行测试绝对是可行的方法。此外,在最差设备上进行测试是最好的...如果它将在第一部iPhone上运行,它将在任何 iPhone上运行。你无法在模拟器上测试的其他东西是加速度计,陀螺仪等(尽管事实上所有的Mac都有内置的3轴加速度计......)
你的问题是什么类型的错误? OpenGL的?表格视图?我遇到的另一个大问题是,如果你想在模拟器上进行全新安装,你必须从模拟器的主屏幕上完全删除它,因为构建和运行有时不会得到所有东西。 (这就像在设备上一样,但很容易忘记模拟器也需要它。)
答案 1 :(得分:1)
它有效然后停止的事实表明存在某种资源瓶颈。
也许存在内存泄漏,也许您没有释放从一个视频流切换到另一个视频流时分配的所有资源?
您可以跟踪资源利用情况,看看这实际上是否是问题。
答案 2 :(得分:0)
您应该能够以完全相同的方式在设备上调试 - 它将处理断点,使用乐器,提供控制台输出等。正如其他人指出的那样,试图预测何时设备和模拟器的行为会有很大差异。所以你绝对应该更多地依赖设备作为调试工具。不断出现的主要差异是处理器速度 - 模拟器可以处理比设备更加紧张的任务。尽可能在设备上进行调试。