2012-04-05 7 views
7

In meiner Anwendung startet eine Aktivität einen Dienst, der als separater Prozess ausgeführt wird. Ich möchte sowohl die Aktivität als auch den Dienst debuggen, aber der Debugger stoppt nicht an den Unterbrechungspunkten im Dienst.Wie Debuggen zwei Prozesse in Android?

Danke für Hilfe.

+0

Es sollte :-). Es gibt keinen Grund, warum die Service Breakpoints nicht getroffen werden. Können Sie den Haltepunkt in der Aktivität, die Sie zum Starten des Dienstes verwenden, erfolgreich anhalten? – tomtheguvnor

+0

@tomtheguvnor In Aktivität, Ja. –

+3

Vorübergehend machen es kein separater Prozess. Besser noch, machen Sie es nicht zu einem separaten Prozess, denn das ist in der Regel unnötig und verschwendet RAM und CPU. – CommonsWare

Antwort

5

Vorübergehend machen es kein separater Prozess.

@CommonsWare

4

Sie müssen das Debuggen auf dem separaten Prozess ermöglichen.

Öffnen Sie die DDMS-Perspektive (wie in Debug oder Java). Wählen Sie in DDMS-> Devices den Prozess Ihres Service aus und klicken Sie dann auf die Debug-Schaltfläche (Schaltfläche "Little-Green-Bug"). In der Nähe Ihres Prozesses wird ein Debug-Symbol angezeigt. Anschließend sollten Sie in Ihrem Service Haltepunkte verwenden können.

Beachten Sie, dass Sie warten müssen, bis der Remote-Prozess gestartet wird, bevor Sie das Debuggen aktivieren. Sie sollten also sicherstellen, dass der separate Prozess beim Systemstart startet, oder einen Unterbrechungspunkt im Hauptprozess unmittelbar nach der Zeile festlegen, die den Remote-Dienst startet.

Vor der Aktivierung des Debugging:

enter image description here

Nach der Aktivierung des Debugging:

enter image description here

(natürlich auch der Service-nicht-Fernbedienung funktioniert vorübergehend zu machen, aber ich habe eine Instanz habe wo das war nicht praktisch)

+0

+1, Schätzen Sie die Antwort. Ich verwende keine zwei Prozesse mehr, deshalb werde ich die Community die Antwort prüfen lassen, bevor ich sie akzeptiere. –

+0

Die gleichen Anweisungen, aber für IntelliJ http://stackoverflow.com/a/10703431/9636 –

5

Nur um die anderen Antworten zu erarbeiten Hier können Sie vorübergehend android.os.Debug.waitForDebugger(); in den Code Ihres sekundären Prozesses einfügen, um dies zu erleichtern.

Dann hängen Sie einfach Ihren Debugger an den Prozess über DDMS oder IntelliJ (oder was auch immer Sie verwenden).

+0

Offizielle-Ish klingender Rat von einem Google-Mitarbeiter, um dies zu unterstützen: https://groups.google.com/d/msg/ Android-Entwickler/DftP5gYcwYI/j_mccTSCHNQJ –