2016-07-28 8 views
0

Soweit ich weiß, arbeiten Debugger auf Basis von Systemaufrufen wie Ptrace in Linux, die die Tracee blockieren und Tracer dann Informationen aus Tracee Speicher abrufen. Es bedeutet, wenn ich einen Debugger verwenden möchte, um den Haupt-Thread in einem Android-App-Prozess zu debuggen, blockiert es den Haupt-Thread und warten auf meine Operationen, die leicht in einigen Sekunden Haupt-Thread-ANR verursachen können. So bin ich verwirrt über ist es wirklich möglich, den Haupt-Thread in Android-App-Prozess zu debuggen und wie?Android Debug Verwirrung

+0

Ich verstehe deine Frage immer noch nicht. Ich bin auch verwirrt. lol –

Antwort

0

Korrekt, ADP verwendet ptrace und blockiert den Hauptthread, und dies führt dazu, dass die Anwendung im Debug-Modus etwas langsamer wird. Wenn Sie Schritt für Schritt den Thread debuggen, in den Sie Ihren Breakpoint setzen, wird er komplett angehalten. Für allgemeine Debugging-Zwecke sollte dies kein Problem sein. Das Testen der reibungslosen Ausführung einer Anwendung sollte im Ausführungsmodus und nicht im Debugmodus erfolgen.

+0

Danke für Ihre Antwort. Aber wenn ich nicht Schritt für Schritt debuggen kann, scheint es, dass der Debugger nicht viel wert ist, weil ich andere Informationen überprüfen kann, nur LOGs in meinen Code einfügen. – xjtulk

+0

Natürlich, aber das würde Ihren Code mit einer großen Anzahl von Konsolen-Logs verunreinigen, die danach aufgeräumt werden müssen. Ich denke, es ist persönliche Vorliebe. Zusätzlich dazu, dass Sie keine LOGs schreiben müssen, können Sie den Status jedes Objekts und seiner Mitglieder im Detail für jeden Schritt in der Ausführung betrachten. UND ermöglicht es Ihnen, sicherzustellen, dass Methoden in der richtigen Reihenfolge ausgeführt werden. – AKroell