2013-09-23 19 views
13

Mam app, że byłem w pracy, który doskonale pracował na iOS 6 w Xcode 4.5, ale teraz Pobrałem XCode 5 z iOS 7 i dostać ten błąd,kod EXC_BAD_ACCESS = 2 adres 0x8

gwintu 1: EXC_BAD_ACCESS code = 2 adres 0x8

w main.m:

#import <UIKit/UIKit.h> 
#import "TestAppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([TestAppDelegate class])); 
    } 
} 

Pobrałem iOS 6 SDK i praca kod idealny na iOS 6 SDK yet ale dowcip h iOS 7, pojawia się ten błąd i nie wiem dlaczego? Próbuję debugować to, ale nie otrzymuję informacji o awarii. Czytałem coś o zombie i włączałem go, przechodząc do Produkt-> Edytuj schemat-> Diagnostyka-> Włącz obiekt Zombie. Ale nawet po tym nie dostałem nic pomocnego.

Jakieś wskazówki?

+0

Wskaźniki: [Magia debugowania systemu Mac OS X] (https://developer.apple.com/library/mac/technotes/tn2124/_index.html) i TN2239 (wyszukiwanie w pomocy Xcode) dla systemu iOS. – CouchDeveloper

+2

Czy ustawiłeś symboliczny "punkt zatrzymania wyjątku"? – Vinzzz

+0

Gdzie powinienem to ustawić? , jeśli masz na myśli punkt przerwania, tak zrobię to, ale nie wiem, co to jest problem i gdzie wystąpił błąd w dorszie – hossein1448

Odpowiedz

9

Chciałbym rozwinąć końcówkę podaną przez Vinzzza, ale różniącą się nieznacznie (wyjątek nie symboliczny punkt przerwania).

Problem polega na tym, że program zatrzymał się na wyjątku przechwyconego systemu operacyjnego (zły dostęp). Musisz przejść o krok wcześniej, aby zobaczyć wyjątek w kodzie, który doprowadziłby do wyjątku systemu iOS. Przejdź do zakładki pułapek w lewej sekcji panelu ekranu Xcode (Breakpoint Navigator). Następnie u dołu panelu powinien pojawić się znak +. Kliknij tam i dodaj "Punkt zatrzymania wyjątku". Ponownie uruchom program, a teraz powinieneś zostać przełamany, gdy problem zostanie wprowadzony w środowisku systemu operacyjnego. Daje to informacje o tym, kto i jaka jest przyczyna.

+0

Dobra wskazówka, dziękuję –

0

Po dojściu do wiersza (lldb) spróbuj nacisnąć przycisk Kontynuuj. Może to ujawnić podstawowy komunikat o błędzie na górze konsoli debuggera. Poszukaj pogrubionego tekstu, aby zobaczyć, jaki potencjalny obiekt powoduje problem. Ten typ błędu zwykle odnosi się do próby uzyskania dostępu do obiektu, który został zwolniony.

Powiązane problemy