Wie kann ich den Debugger nach dem Start an die iOS-App anhängen?

100

Ich habe ein Problem bei der Fehlerbehebung, das sehr selten auftritt und nicht auftritt, wenn unter Xcode Dinge ausgeführt werden.

Ist es möglich, eine App normal (dh von Springboard aus) auszuführen, bis mein Problem auftritt, und dann an diesem Punkt einen Debugger anzuhängen?

Ich würde es vorziehen, wenn möglich ohne Jailbreak zu tun.

Locksleyu
quelle

Antworten:

123
  • Schließen Sie Ihr Gerät an Ihren Mac an
  • Debug> Nach PID oder Name an Prozess anhängen
  • Geben Sie im Dialogfeld den Namen Ihrer App ein, der beim Starten über Xcode im Debug-Navigator angezeigt wird.

Wenn die App bereits ausgeführt wird, wird der Debugger an den laufenden Prozess angehängt. Wenn es nicht ausgeführt wird, wartet es, bis die App gestartet und dann angehängt wird.

Ole Begemann
quelle
Ole, danke für die Antwort. Ich suchte nach einem Weg, dies zu tun. Wenn ich den Debugger anhänge, sieht es so aus, als würde er angehängt, aber dann wird folgende Meldung angezeigt: Warnung: Symbole für / var / mobile / Applications / {GUID} / {APPNAME} .app / {APPNAME} können nicht gelesen werden (Datei nicht) gefunden). Wenn ich in XCode auf die Schaltfläche "Stopp" drücke, wird die App beendet. Es sieht so aus, als würde es die Debug-Symbole nicht finden, obwohl es im Debug-Modus erstellt wird. Irgendwelche Ideen?
Brian
4
Ich habe ein Problem mit Wenn die App nicht ausgeführt wird, wartet sie auf den Start der App und hängt sie dann an. Teil. Es funktioniert nicht. Ich benutze den Prozessnamen, um auf den Aufruf der App zu warten. Ich starte die App auf dem iPhone, aber der Debugger merkt nie, dass die App gestartet wurde.
Jonny
1
@BrianV - Sie müssen sicherstellen, dass Sie mit -ggdb kompilieren, wenn Sie eine Verbindung zum Prozess herstellen möchten.
itfische
4
Ich stimme Jonny zu. Ich habe die Erfahrung gemacht, dass das Anhängen auf dem Simulator funktioniert, aber nicht mit dem eigentlichen Gerät verbunden wird.
James Moore
4
HINWEIS: In Xcode 5.0.1+ ist es Debug > Attach to Process > By Process Identifier (PID) or Name stackoverflow.com/a/20193088/175830
Jason Axelson
116

Ich werde dies hier belassen, da keine der beiden anderen Antworten mir ohne ein wenig Mühe genug Details gab.

  1. Führen Sie Ihre App im Simulator aus und notieren Sie sich den Namen im Debug-Navigator Geben Sie hier die Bildbeschreibung ein

  2. Schließen Sie Ihr Gerät an und vergessen Sie nicht, Ihr Gerät als Ziel auszuwählen Geben Sie hier die Bildbeschreibung ein

  3. Debuggen> An Prozess anhängen> Nach Prozesskennung (PID) oder Name Geben Sie hier die Bildbeschreibung ein
  4. Geben Sie den Namen aus Schritt 1 ein und hängen Sie ihn an. Das sollte alles sein, was Sie tun müssen. Geben Sie hier die Bildbeschreibung ein
Adam Johns
quelle
8
Sie sollten 1000 Upvotes haben. Das Debuggen von Dingen, die über ein Cutom-URL-Schema beginnen, kann ohne diesen netten Trick nerven. Danke vielmals!
Txulu
2
Ich wünschte, ich hätte diese Antwort gesehen, bevor ich 20 Minuten damit verbracht hätte, dies selbst herauszufinden :(
simon_smiley
7
Dies funktioniert insofern, als es mit dem Prozess verbunden ist, aber ich kann keine Protokollausgabe sehen, die das ist, was ich wirklich brauche. Irgendwelche Ideen?
Orlando
2
@Orlando - Wenn Sie nach Protokollausgabe suchen, empfehle ich DeviceConsole: github.com/rpetrich/deviceconsole
orion elenzil
1
Ich habe genau das getan, was Sie vorgeschlagen haben. und ich erhalte die Fehlermeldung: Could not attach to PIDIch habe sowohl den Namen als auch die ID ausprobiert. Ich habe versucht, während die App läuft und während sie gestoppt ist ..
Honey
49

In Xcode 5.0.1 und 6 sind es die Menüleistenelemente:

Debug > Attach to Process > By Process Identifier (PID) or Name...
PiTheNumber
quelle
7

In Xcode 7 ist es nur:

Debug > Attach to Process by PID or Name...
Japes
quelle