Jak dołączyć debugger do aplikacji na iOS po uruchomieniu?

101

Mam problem, który rozwiązuję, który pojawia się bardzo rzadko i nie wydaje się występować, gdy coś działa w Xcode.

Czy można normalnie uruchamiać aplikację (np. Ze Springboard) do momentu wystąpienia mojego problemu, a następnie dołączyć debugger w tym momencie?

Wolałbym to zrobić bez jailbreakingu, jeśli to możliwe.

Locksleyu
źródło

Odpowiedzi:

124
  • Podłącz urządzenie podłączone do komputera Mac
  • Debuguj> Dołącz do procesu według PID lub nazwy
  • W arkuszu dialogowym wprowadź nazwę aplikacji wyświetlaną w nawigatorze debugowania po uruchomieniu za pomocą Xcode.

Jeśli aplikacja jest już uruchomiona, debugger połączy się z uruchomionym procesem. Jeśli nie jest uruchomiona, będzie czekać na uruchomienie aplikacji, a następnie się załączy.

Ole Begemann
źródło
Ole, dzięki za odpowiedź. Szukałem sposobu, aby to zrobić. Kiedy idę dołączyć debuger, wygląda na to, że się załącza, ale pojawia się ten komunikat: ostrzeżenie: nie można odczytać symboli dla / var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME} (plik nie znaleziony). Kiedy naciskam przycisk „stop” w XCode, aplikacja kończy działanie. Wygląda na to, że nie znajduje symboli debugowania, chociaż jest budowany w trybie debugowania. Jakieś pomysły?
Brian
4
Mam problem z aplikacją Jeśli nie jest uruchomiona, będzie czekać na uruchomienie aplikacji, a następnie się załączy. część. To nie działa. Używam nazwy procesu, aby czekać, aż aplikacja zadzwoni. Uruchamiam aplikację na iPhonie, ale debugger nigdy nie zdaje sobie sprawy, że aplikacja została uruchomiona.
Jonny,
1
@BrianV - musisz się upewnić, że kompilujesz z -ggdb, jeśli chcesz mieć możliwość dołączenia do procesu.
itfische
4
Zgadzam się z Jonnym; z mojego doświadczenia wynika, że ​​załącznik działa na symulatorze, ale nie łączy się z rzeczywistym urządzeniem.
James Moore,
4
UWAGA: W Xcode 5.0.1+ jest to Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason Axelson,
117

Zostawię to tutaj, ponieważ żadna z pozostałych 2 odpowiedzi nie dała mi wystarczająco dużo szczegółów bez odrobiny wysiłku.

  1. Uruchom aplikację w symulatorze i zanotuj nazwę w nawigatorze debugowania wprowadź opis obrazu tutaj

  2. Podłącz swoje urządzenie i nie zapomnij wybrać swojego urządzenia jako celu wprowadź opis obrazu tutaj

  3. Debuguj> Dołącz do procesu> Według identyfikatora procesu (PID) lub nazwy wprowadź opis obrazu tutaj
  4. Wprowadź nazwę z kroku 1 i dołącz. To powinno być wszystko, co musisz zrobić. wprowadź opis obrazu tutaj
Adam Johns
źródło
8
Powinieneś mieć 1000 głosów za. Debugowanie rzeczy, które zaczynają się od schematu url, może być uciążliwe bez tej zgrabnej sztuczki. Wielkie dzięki!
txulu
2
Żałuję, że nie zobaczyłem tej odpowiedzi, zanim spędziłem 20 minut na samodzielnym
rozwiązywaniu tego
7
Działa to w ten sposób, że dołącza się do procesu, ale nie widzę żadnych danych wyjściowych dziennika, których naprawdę potrzebuję. Jakieś pomysły?
Orlando
2
@Orlando - Jeśli szukasz danych wyjściowych dziennika, bardzo polecam DeviceConsole: github.com/rpetrich/deviceconsole
orion elenzil
1
Zrobiłem dokładnie tak, jak sugerowałeś. i pojawia się błąd: Could not attach to PIDwypróbowałem zarówno nazwę, jak i jej identyfikator. Próbowałem, gdy aplikacja jest uruchomiona i gdy jest zatrzymana ...
Kochanie,
49

W Xcode 5.0.1 i 6 są to elementy paska menu:

Debug > Attach to Process > By Process Identifier (PID) or Name...
PiTheNumber
źródło
7

W Xcode 7 jest po prostu:

Debug > Attach to Process by PID or Name...
Japes
źródło