【问题标题】:iphone game runs on devices. crash on specific level in simulatoriphone 游戏在设备上运行。在模拟器中特定级别崩溃
【发布时间】:2011-12-08 13:04:57
【问题描述】:

我开发了一款游戏,目前可以在 iphone/ipad/ipod touch 上运行,没有任何问题。 最近我需要在模拟器上运行它,我发现它在启动其中一个级别时在特定的加载函数上崩溃,我去了用户/图书馆/日志/诊断报告中的崩溃报告,看到 abort() 正在在调用其中一个游戏对象的构造函数之后调用:

0   libSystem.B.dylib               0x93100ef6 __kill + 10
1   libSystem.B.dylib               0x93100ee8 kill$UNIX2003 + 32
2   libSystem.B.dylib               0x9319362d raise + 26
3   libSystem.B.dylib               0x931a9679 __abort + 124
4   libSystem.B.dylib               0x9318c3bc release_file_streams_for_task + 0
5   gamehere                        0x0004d650 Piso::Piso(W3d*, int, int) + 758 (Piso.cpp:45)

所以我转到“Piso.cpp”并看到第 45 行只是这个对象的构造函数的结束括号。

我真的不知道导致这次崩溃的原因是什么,在该构造函数中,我加载了纹理,为该类初始化了一些计数器、数组和其他东西,同样,在设备上运行时,其中任何一个都会导致问题...

我真的很感激一些关于在哪里寻找以解决此问题的想法。 谢谢!。

【问题讨论】:

  • 可以给我们完整的构造函数代码吗?右括号表示某些局部变量的析构函数...
  • 模拟器和iPhone OS版本一样吗?
  • 是的,它们完全一样。

标签: c++ iphone opengl-es ios-simulator


【解决方案1】:

右括号表示某个局部变量的析构函数。例如:

struct Test {
    ~Test() {
        throw "error";
    }
}

int main() {
    int b;
    {
        Test a;
    };    //On your stack trace, here it will be pointed as the error line.
    b = 1;
};

【讨论】:

  • 谢谢,我会检查函数中的局部变量。很抱歉没有发布该构造函数的代码,主要是因为调用了专有对象。会回复的。
  • 完成!。你给了我正确的线索,这是一个在其中一个案例中超出边界的本地数组。太糟糕了,我对这个问题投了反对票,我假设没有发布完整的代码。无论如何,再次感谢您的提示。
【解决方案2】:

只要它在实际设备上工作,我一点也不担心,模拟器无法 100% 重现设备可以做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多