2016-05-25 4 views
1

Wie verfolgen Sie alle Methoden, die in verschiedenen Dateien in einem bestimmten Benutzerfluss aufgerufen werden?Festlegen von Debugger-Haltepunkten für alle Methoden in einem Xcode-Projekt

Das Einfügen von Haltepunkten an verschiedenen Punkten und das Beobachten des Backtrace scheint nicht der effizienteste Weg zu sein.

Stattdessen möchte ich gerne -

1) Setzen Sie einen Haltepunkt für alle Methoden im Interesse Projekt.

2) Stellen Sie an allen Haltepunkten einen Debugger-Befehl ein, der den Dateinamen und den Methodennamen ausgibt.

3) Bearbeiten Sie die Haltepunkte so, dass das Programm weiterhin ausgeführt wird, nachdem ein Haltepunkt erreicht wurde. (Diese Option ist verfügbar, wenn Sie einen bestimmten Breakpoint bearbeiten.) Wir stoppen also nicht an einem Haltepunkt.

4) Deaktivieren Sie alle Haltepunkte, bis ich den Fluss erreiche, an dem ich arbeiten muss.

5) Aktivieren Sie alle Breakpoints direkt vor dem Start des Flow. Mit diesem Ansatz müssen wir nicht manuell Haltepunkte an verschiedenen Stellen setzen, um den Ausführungsablauf zu verstehen. Sobald der Ablauf abgeschlossen ist, kann ich mir einfach die Debugger-Konsole ansehen und den Ausführungsfluss ermitteln.

Jetzt ist die Frage - Wie können wir das mit lldb-Befehle tun? würde mich über jeden Input/Vorschläge freuen.

+0

Betrachten Sie dtrace (möglicherweise mit Instrumenten) – jtbandes

Antwort

0

Sie können Haltepunkte für alle Methoden in verschiedenen Dateien setzen, und um zu verfolgen, wie die Ausführung innerhalb dieser Methode ausgeführt wird, klicken Sie auf Stepover.

Step over - shortcut - f6, it stops execution at next loc. 

auch alternativ können Sie Wert von bestimmten Variablen oder Array überprüfen, indem „po Variablenname“ in Ausgabefenster eingeben.

0

Sie können den Namen verwandter Methoden hinzufügen, indem Sie die Symbolausnahmebreakpoints hinzufügen.

1

Sie können nicht dies mit der Xcode Breakpoint-Schnittstelle, aber in der LLDB Konsole können Sie tun: „“

(lldb) break set -r . -s AppName 
Breakpoint 1: 478 locations. 
(lldb) br com add 
Enter your debugger command(s). Type 'DONE' to end. 
> bt 
> continue 
> DONE 
(lldb) 

, dass ein „Symbolname regulären Ausdruck Breakpoint“ setzt auf alle Namen (stimmt mit allem überein) in der binären/gemeinsam genutzten Bibliothek namens AppName. Wenn Sie die Option -s auslassen, werden alle Symbole überall übereinstimmen. Das funktioniert aber ganz langsam ...

Der Befehl druckt ein Backtrace und fährt fort.

Dies macht nur ONE Breakpoint, so dass Sie tun können:

(lldb) break disable 1 

Bis Sie es brauchen, und ermöglichen es dann mit:

(lldb) break enable 1 

Wenn Sie nur einige Methoden fangen wollen, müssen Sie Sie können den regulären Ausdruck anpassen, und wenn Sie feststellen, dass Sie an einigen Stellen, die Sie treffen, nicht interessiert sind, können Sie die Positionen innerhalb des von Ihnen erstellten Haltepunkts einzeln deaktivieren.

(lldb) break list 1 

zeigt Ihnen alle Standorte und:

(lldb) break disable 1.2-1.10 1.15 

etc. werden die Standorte deaktivieren.

Dies könnte ein wenig langsam werden, weil Ihre App startet & ständig stoppt. Aber es wird tun, was du verlangst.

Verwandte Themen