2009-08-19 5 views
23

Podczas debugowania konsolę zawsze wypluwa mi komunikat o błędzie: „Break na _NSLockError() do debugowania”Należy przerwać _NSLockError() w celu debugowania ... Jak?

Moje założenie jest: w Xcode muszę pojawić się pewien breackpoint tak, że debugger zatrzymuje się w punkcie, w którym to występuje błąd.

Jak mogę to zrobić?

Odpowiedz

14

1/Z menu wybierz Build -> Build and Debug

2/Kliknij ikonę "GDB" - zostanie włączony do "konsoli Debugger"

3/naciśnij Control + C, aby przerwać twój plik binarny. Otrzymasz podpowiedź gdb.

4/wpisz "b _NSLockError" i kontynuuj wykonywanie po ustawieniu punktu przerwania.

(gdb) b _NSLockError 
Breakpoint 8 at 0x911db1a9 
(gdb) c 
Continuing. 

5/można wchodzić w interakcje z GDB tak jak został uruchomiony z konsoli, czyli można Ctrl + C ponownie i zobaczyć aktualne punkty przerwania:

(gdb) info breakpo 
Num Type   Disp Enb Address What 
8 breakpoint  keep y 0x911db1a9 <_NSLockError+9> 
+0

Dzięki! Dokładnie tego szukałem :) – Nobik

+0

Czasami łatwiej jest debugować moje pliki binarne z Terminal.app, uruchamiając je z poziomu GDB, tj. "Gdb/ścieżka_do/App.app/Contents/MacOS/App" – diciu

+0

Hmm ... dużo łatwiej zrobić to po swojemu, ponieważ będzie on nadal stosowany podczas sesji debugowania ... –

12

Aby to zrobić automatycznie dla danego projektu w Xcode :

  1. W Xcode, Option-Command-B, aby otworzyć okno Punktów przerwania (lub Run> Show> Breakpoints).
  2. Gdzie jest napisane "Kliknij dwukrotnie symbol", kliknij dwukrotnie ... i wklej w "_NSLockError".
  3. Kliknij gdziekolwiek w oknie, a nowa pozycja zostanie automatycznie zaktualizowany (lub po prostu dodać go ręcznie) z modułem = „Foundation” (bez cudzysłowów)
  4. Budowanie & Go i będzie teraz spadać do debuggera automatycznie po kliknięciu automatycznie wykrytego zakleszczenia.
41

Korzystanie z Xcode 4 GUI:

  1. Otwórz nawigatora punktów przerwań (Command + 6 lub Widok> nawigator> Pokaż Breakpoint Navigator)
  2. Kliknij '+' w lewym dolnym rogu i wybierz „Dodaj symboliczny Breakpoint ...”
  3. Enter _NSLockError" w polu Symbol
  4. Enter 'Foundation' w obszarze modułu
  5. Kliknij 'Gotowe'

Jak wyżej, debugger włamie się na zamek, co spowoduje zakleszczenie, dzięki czemu można sprawdzić stan dzwonka i, miejmy nadzieję, ustalić, gdzie wystąpiła oryginalna blokada.