2013-04-16 48 views
0

我是一個名爲CountdownCenter的cydia調整器的開發者。我試圖爲我的小部件創建一個數字時鐘外觀,所以我創建了一個完美的示例應用程序。做完這些之後,我將這些數據轉移到我的調整代碼中,但是這導致我的iPhone上出現SIGSEGV崩潰。經過一些測試後,我發現了導致崩潰的部分,但我無法找到問題所在,因爲這部分可以在普通應用上運行。你能幫我嗎?SIGSEGV錯誤發生在實際設備上,但不是在ios模擬器上

下面是代碼:

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]; 

回答

0

SIGSEGV通常意味着,你試圖訪問內存時,你是不是允許訪問。 (順便說一句,你測試這與發佈版本?)也許f.e.這裏(還有其他一些類似的地方太):

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

有一些可能性:

  • secon(可怕的變量BTW名...)是floatdouble,在這種情況下,while loop要麼從未進入過或從未離開過
  • c則爲如此之大,超出了的界

爲了解決這個問題,我建議只在你的代碼開始時提供一個斷點並逐步檢查它。

+0

嘿,謝謝,結果你說得對,有一個以上的錯誤,但最重要的是它寫出了界限。現在,你能再次幫助我嗎?每次secon從0到9再次發生一次SIGABRT錯誤(該數字從60到0每秒減少1次,但是每次遇到一組新的10個數字時,它都會因爲SIGABRT而崩潰,爲什麼?我將爲您編輯看到更新的代碼,我在標籤中看到的文本是正確的,這就是爲什麼整個事情有點奇怪...... – isklikas

+0

(c和數組在方法中初始化,因爲他們沒有實際上需要像原始代碼一樣是全球性的) – isklikas

相關問題