Jedną z części dużej bazy kodu jest drukowanie dziwnych oświadczeń NSLog
i próbuję wykryć, skąd się bierze. Czy istnieje sposób umieszczenia 1 punktu przerwania na początku każdego wywołania NSLog
, aby sprawdzić, skąd jest wywoływany, zamiast ręcznie umieszczać punkty przerwania we wszystkich miejscach, które wywołują NSLog
?Czy istnieje sposób ustawiania punktu przerwania na początku każdej instrukcji NSLog?
Odpowiedz
Według this można ustawić tego rodzaju przerwania przez to w konsoli lldb:
breakpoint set --name NSLog
Jednym ze sposobów, aby to zrobić przy użyciu Xcode może być umieścić punkt przerwania w funkcji main
lub Ci AppDelegate
applicationDidFinishLaunchin
(czytaj: tak szybko, jak to możliwe). Następnie należy uruchomić aplikację, a kiedy zatrzymuje się na wspomnianym przerwania, masz dostęp do konsoli lldb: wpisać powyższą linię i naciśnij Enter i drukuje lldb coś takiego:
Breakpoint 3: where = Foundation`NSLog, address = 0x32a3da08
W tym momencie , wznowisz aplikację i zostanie ona zatrzymana ponownie po wywołaniu NSLog
(zwróć uwagę na stos wywołań za pomocą Nawigatora Debug).
W przerwania telefonicznej (polecenia +) dodaje się (na dole, jest znak plus) symboliczny przerwania i wykorzystać NSLog
jako symbol.
W Xcode 6:
Etap 1:
Na Navigator po lewej stronie, przejdź do przerwań Navigator (polecenie ⌘ +)
Krok 2:
Kliknij przycisk +
w lewym dolnym rogu (Dodać nowy punkt przerwania),
następnie wybierz Dodaj Symboliczne Breakpoint ...:
Krok 3:
W Symbol, typ NSLog
.
Alternatywnie, można zrobić to samo w Debug → Breakpoints → Tworzenie Symboliczny Breakpoint.
Fo Xcode 5, patrz this.
To nie działa na XCode 6.2:/ –
Jeśli chcesz przerwać na pewnym wiadomości dziennika można użyć:
tym przykładzie przerwa na każdym rejestrze zawierającym słowo „ostrzeżenie”.
Wielkie dzięki. Pomogło mi to rozwiązać problem, który miałem w swoim pytaniu http://stackoverflow.com/questions/41281627/finding-the-origin-of-xcode-debug-message – mylogon
, aby zapisać ponowne wpisywanie, oto ciąg: '[ NSString *) $ r0 containsString: @ "Warning"] ' –
- 1. Czy istnieje sposób na wyczyszczenie wyjścia NSLog?
- 2. sposób ustawiania punktu kontrolnego widoku przybliżenia (GMGridView)
- 3. Bash podczas przerwania pętli odczytu na początku
- 4. Czy istnieje sposób ustawiania wartości domyślnej dla tablicy pamięci współużytkowanej?
- 5. Dodaj niektóre znaki na początku każdej linii
- 6. Czy istnieje sposób na użycie instrukcji z dynamicznie tworzonymi celami?
- 7. Błąd w stanie punktu przerwania
- 8. Ustawianie punktu przerwania w NSKVODeallocateBreak
- 9. Czy istnieje sposób ustawiania kolejności Z w warstwie widoku adnotacji?
- 10. Czy istnieje sposób ustawiania i ikona aplikacji dla urządzeń Samsung?
- 11. Czy istnieje sposób ustawiania licznika w iteracji wąsów?
- 12. Czy istnieje sposób programowego ustawiania parametrów kontekstowych w osadzonym pomoście?
- 13. ustawianie punktu przerwania w konkretnym wierszu wewnątrz funkcji z 'gdb'
- 14. Czy istnieje sposób ustawiania CommandArgument przycisku asp.net w javascript?
- 15. Czy istnieje sposób resetowania statystyk punktów przerwania w GDB?
- 16. Wykonywanie kodu po trafieniu punktu przerwania?
- 17. Jak powrócić do punktu przerwania podczas debugowania?
- 18. Czy istnieje sposób na uzyskanie REPL w pydev?
- 19. Czy podczas budowania aplikacji do dystrybucji istnieje jakiekolwiek niebezpieczeństwo opuszczenia instrukcji NSLog?
- 20. jak utworzyć akcję logowania punktu przerwania w xcode?
- 21. Ustaw punkt przerwania dla każdej linii w GDB
- 22. Czy istnieje sposób na wyzerowanie wszystkich danych w instrukcji SELECT * FROM?
- 23. Czy istnieje sposób użycia dwóch instrukcji "..." w funkcji w R?
- 24. Czy istnieje sposób na zareagowanie na podniesienie wyjątku do początku programu bez próby/z wyjątkiem Pythona?
- 25. Nie można wyłączyć punktu przerwania (ducha).
- 26. Ustawianie punktu przerwania danych na elemencie std :: map
- 27. Jak używać punktu przerwania po oczekiwaniu na test jednostkowy?
- 28. W środowisku Eclipse istnieje sposób na wyłączenie punktu przerwania do momentu, gdy pierwszy punkt zatrzymania zostanie trafiony jako pierwszy?
- 29. Czy istnieje sposób użycia warunku instrukcji If jako jej wartości?
- 30. Znaczenie przekreślonego punktu przerwania w Eclipse
Zdobądź DLog, globalne wyszukiwanie i zamień wszystkie wpisy NSLog. – Wain
@Wain To nie zadziała, jeśli jakaś biblioteka binarna (np. UIKit) wywołuje 'NSLog'. –
Prawdopodobnie zastąpiłbym makro NSLog moim własnym - jednym, który odwołuje się do haka punktu przerwania. –