如何才能找出我在模拟器中运行的应用程序突然崩溃的原因

时间:2013-10-17 00:18:34

标签: ios ios-simulator rubymotion formotion

我正在使用红宝石动作。以下是我的环境的详细信息。

$ motion --version
2.9
$ bundle
Using bubble-wrap (1.4.0) 
Using motion-require (0.0.7) 
Using formotion (1.6) 
Using motion-layout (0.0.1) 
Using thor (0.18.1) 
Using rubymotion_generators (0.1.0) 
Using bundler (1.3.5) 

当我运行我的应用程序并单击一个按钮,假设要加载使用格式构建的表单时,我的应用程序突然崩溃并显示此错误消息。

  

* 模拟器会话以错误结束:错误域= DTiPhoneSimulatorErrorDomain Code = 1“模拟的应用程序   退出。“UserInfo = 0x10011e200 {NSLocalizedDescription =模拟   application quit。,DTiPhoneSimulatorUnderlyingErrorCodeKey = -1}

使用rake debug=1运行我看到以下内容:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xc7243c89
0x0081309f in objc_msgSend ()
(gdb) 

我的应用程序在升级rubymotion之前工作得非常好,一旦我更新了rubymotion,我还必须更新我的一些宝石。

如何解决此问题或对此进行问题排查?

2 个答案:

答案 0 :(得分:0)

当您尝试访问已解除分配的对象时,几乎总是这样。尝试将变量更改为实例变量(@myvar)或全局变量($myvar),看看是否能解决问题。显然,你不想在生产中使用全局,但要试一试。

答案 1 :(得分:0)

当您点击该断点时要做的第一件事就是获得回溯。通常这会指向正确的方向。查看信息的另一种方法是打开控制台,然后运行/崩溃您的应用程序。看看发生了什么。

正如@Jamon所说,当你没想到它时,它通常会被GC收获。