繁体   English   中英

在实际设备上发生SIGSEGV错误,但在iOS模拟器上未发生

[英]SIGSEGV Error occurs on the actual device but not on ios simulator

我是一个名为CountdownCenter的cydia调整程序的开发人员。 我试图为小部件创建数字时钟外观,因此我创建了一个示例应用程序,可以完美地做到这一点。 完成此操作后,我将此数据传输到我的调整代码中,但是这导致iPhone上发生SIGSEGV崩溃。 经过一些测试,我发现了导致崩溃的那部分,但是我只是找不到什么问题,因为这部分可以在正常的应用程序上运行。 你能帮我吗?

这是代码:

int digitarray[10];
    int c = 0;
    digitarray[0] = 0;
    digitarray[1] = 0;
    while (secon>0) {
        int digitt = secon % 10;
        digitarray[c] = digitt;
        secon /= 10;
        c++;
    }
        lbl.text = [NSString stringWithFormat:@"%d", digitarray[0]];
          [self selectimage:digitarray[0] img:numview10];

SIGSEGV通常意味着,您正在尝试访问内存,不允许您访问。 (顺便说一下,您是否正在使用发布版本对其进行测试?)也许在这里(也有一些其他类似的地方):

c = 0;
while (secon>0) {
    int digitt = secon % 10;
    digitarray[c] = digitt;
    secon /= 10;
    c++;
}

有一些可能性:

  • secon (可怕的变量名btw ...)是floatdouble ,在这种情况下, while loop永远不会进入或永远不会离开
  • c变得如此之大以至于它超出了digitarray的范围

为了解决这个问题,我建议在代码的开头加上一个断点,并逐步检查它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM