2016-04-25 8 views
0

Ich habe ein Programm geschrieben in Python für automatisierte Tests auf mobilen Geräten (iOS & Android). Der richtige Workflow dieses Programms ist es, wie (für Rauchversuche) folgt:Beenden der LLDB-Sitzung nach einer definierten Zeitspanne

  1. Deploy ausführbare einem angeschlossenen USB-Gerät (.ipa oder .app) mit ios implementierende

  2. Anwendung starten (Debug-Prozess) -> schreibt nach stdout.

  3. Ausgabe in Pipe schreiben -> so ist es möglich, die Ausgabe des Debugging-Prozesses parallel zu lesen.

  4. Wenn die gesuchte Nadel in der Ausgabe erkannt wird, wird das Gerät neu gestartet (dies ist ein ziemlich schmutziges Problem zu umgehen, werde mich ein Kraft-Stop-Verfahren oder ähnliches einfügen)

Mein Problem is: Wenn die Nadel in der Ausgabe des Debug-Prozesses erkannt wird, wird die lldb-Sitzung unterbrochen, aber nicht beendet. Um die lldb-Sitzung zu beenden, muss ich das Gerät erneut verbinden oder das Terminal beenden und es erneut öffnen.

Gibt es eine Möglichkeit, dem lldb-Aufruf etwas wie ein "time-to-live-flag" anzuhängen, um zu bestimmen, wie lange die lldb-Sitzung laufen soll, bis sie automatisch beendet wird? Eine andere Möglichkeit, wie ich die lldb-Sitzung beenden kann, besteht darin, der Sitzung nach dem Neustart des Geräts erneut beizutreten und sie dann zu beenden, aber es scheint, dass lldb nur ein Unterprozess von ios-deploy ist. Daher habe ich keine Möglichkeit gefunden, auf den lldb-Prozess zuzugreifen.

Antwort

1

Es ist nicht so etwas in lldb eingebaut, aber vermutlich könnten Sie einen Timer in Python setzen und die Debug-Sitzung beenden, wenn es angebracht ist.

Hinweis: Wenn Sie das Gerät neu starten, sollte die Verbindung von lldb zum Remote-Debug-Server geschlossen werden, und lldb sollte erkennen, dass es geschlossen wurde und den Prozess beendet. Es wird nicht beendet, wenn dies standardmäßig geschieht, aber vermutlich, was auch immer Sie auf Debugger-Ereignissen warten müssen, kann das Exit und Exit des Debuggers erkennen oder was auch immer Sie tun müssen.

Hinweis, wenn lldb auf Eingabe von debugserver wartet (wenn das Programm läuft), sollte es dies automatisch bemerken, da der select-Aufruf mit EOF zurückkommt. Aber wenn der Prozess gestoppt wird, wenn Sie die Verbindung schließen, wird lldb wahrscheinlich nicht bemerken, bis es etwas liest.

In letzterem Fall sollten Sie in der Lage sein, lldb auf den Stopp reagieren zu lassen, der anzeigt, dass die "Nadel" gefunden wurde, und die Debugsitzung manuell beenden.

Verwandte Themen