Debuggen von geräteübergreifenden Anwendungen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Geräteübergreifende Anwendungen

Architektur für das geräteübergreifende Debuggen

Debuggen von macOS-Anwendungen

Um macOS-Anwendungen zu debuggen, gehen Sie wie folgt vor: In der Projektverwaltung:

  1. Fügen Sie die Zielplattform hinzu oder aktivieren Sie sie (macOS 64 Bit und macOS ARM 64 Bit)
  2. Weisen Sie das Verbindungsprofil über diesen Pfad zu: Tools > Optionen > Bereitstellung > Verbindungsprofil-Manager und legen Sie Folgendes fest:
    • Zielplattform
    • Hostname oder IP-Adresse
    • Port-Nummer
    • Sonstige Profiloptionen
  3. Fügen Sie das SDK hinzu.

Stellen Sie im Platform Assistant Server (PAServer) sicher, dass:

  1. PAServer den Remote-Debugger für macOS aufruft.

{{Note|Auf der macOS-Plattform benötigt der Debugger Dateiberechtigungen. Das Debuggen unter macOS ist eine Operation, für die spezielle Berechtigungen erforderlich sind. Nur ein Prozess mit den adäquaten Zugriffsrechten kann als Debugger fungieren. Weitere Informationen finden Sie unter Übernahme der Berechtigung zur Debugging-Unterstützung auf einem Mac.

Einzelheiten über die Entwicklung von macOS-Apps finden Sie unter macOS-Anwendungsentwicklung.

Debuggen von iOS-Apps

Um iOS-Anwendungen zu debuggen, gehen Sie wie folgt vor:

In der Projektverwaltung:

  1. Fügen Sie die Zielplattform hinzu oder aktivieren Sie sie (iOS 64 Bit).
  2. Weisen Sie das Verbindungsprofil über diesen Pfad zu: Tools > Optionen > Bereitstellung > Verbindungsprofil-Manager und legen Sie Folgendes fest:
    • Zielplattform
    • Hostname oder IP-Adresse
    • Port-Nummer
    • Sonstige Profiloptionen
  3. Rufen Sie den Tools > Optionen > Bereitstellung > SDK-Manager auf, und fügen Sie die SDK-Version hinzu.

Stellen Sie im Platform Assistant Server (PAServer) sicher, dass:

  1. PAServer den Remote-Debugger für iOS aufruft.
  2. iOS-Apps während der Entwicklung bereitgestellt und mit der Code-Signatur versehen sind.

Auf dem iOS-Gerät:

  1. Verbinden Sie das Gerät mit dem Mac.
Hinweis: Beim Debuggen auf der Zielplattform iOS-Gerät - 64 Bit sind einige herkömmliche Debugger-Funktionen nicht verfügbar. Weitere Informationen finden Sie unter Debuggen von iOS-Apps. Einzelheiten über die Entwicklung von iOS-Apps finden Sie unter Mobile iOS-Anwendungsentwicklung.

Debuggen von Android-Anwendungen

Bereiten Sie vor dem Debuggen von Android-Anwendungen in RAD Studio Ihre Android-Entwicklungsumgebung vor.

Der in RAD Studio integrierte Debugger

Mit dem in RAD Studio integrierten Debugger können Sie eine Anwendung debuggen, die für eine der unterstützten Zielplattformen konzipiert ist.

RAD Studio unterstützt die folgenden Debugger, die auf der jeweiligen Zielplattform ausgeführt werden:

  • Embarcadero Windows-32-Bit-Debugger
  • Embarcadero Windows-64-Bit Debugger für Delphi (auf einem PC mit einem 64-Bit-Windows-Betriebssystem)
  • Embarcadero Windows-64-Bit-LLDB-Debugger für C++ (auf einem PC mit einem 64-Bit-Windows-Betriebssystem)
  • Embarcadero macOS-64-Bit-Debugger (auf einem Intel Mac mit einer 64-Bit-Version von macOS)
  • Embarcadero macOS ARM-64-Bit-Debugger (auf einem ARM Mac mit einer 64-Bit-Version von macOS)
  • Embarcadero Linux-64-Bit-Debugger
  • Embarcadero 64-Bit-Debugger für iOS-Geräte (auf einem angeschlossenen 64-Bit-iOS-Gerät)
  • Embarcadero Android-32-Bit-Debugger (auf einem angeschlossenen 32-Bit-Android-Gerät)
  • Embarcadero Android-64-Bit-Debugger (auf einem angeschlossenen 64-Bit-Android-Gerät)

Die geeigneten Embarcadero-Debugger werden installiert, wenn Sie Ihre Entwicklungsumgebung wie in der Hilfe beschrieben vorbereiten. Wenn Sie beispielsweise die Schritte für die macOS-Anwendungsentwicklung ausführen, werden der Platform Assistant und der macOS-Debugger auf Ihrem Mac installiert. Genauso werden beim Ausführen der Schritte für die mobile iOS-Anwendungsentwicklung PAServer und der iOS-Debugger von RAD Studio auf Ihrem Mac als Zwischenplattform installiert, die Ihre Zielplattform (iOS) unterstützt. Die auf Ihrem System registrierten Embarcadero-Debugger sind auf der Seite Tools > Optionen > Debugger-Optionen aufgeführt.

Hinweis: Zusätzliche gemeinsame Bibliotheken werden in den iOS64-Debugger geladen. Diese gemeinsamen Bibliotheken werden vom Debugger gesteuert und können ignoriert werden. Einige solcher Bibliotheken sind:
  • __lldb_apple_objc_v2_get_dynamic_class_info
  • __lldb_caller_function
  • __lldb_apple_objc_v2_get_shared_cache_class_info
  • __lldb_caller_function
Hinweis: Möglicherweise stellen Sie fest, dass im iOS64-Debugger zusätzliche Threads ausgeführt werden. Diese zusätzlichen Threads werden vom Debugger gesteuert und können ignoriert werden.
Hinweis: Die neue Debugging-Lösung, die in diesem Thema beschrieben wird, ist die empfohlene Lösung für das geräteübergreifende Anwendungs-Debugging für macOS, iOS, Android und 64-Bit-Windows (von einem 32-Bit-Windows-Entwicklungssystem aus). In diesem Szenario verwenden Sie den jeweiligen geräteübergreifenden Debugger (der auf der Zielplattform ausgeführt wird) zusammen mit dem integrierten Debugger in der IDE. Die alte Lösung für das Remote-Debuggen wird weiterhin unterstützt und kann optional zum Installieren und Ausführen der geräteübergreifenden Debugger verwendet werden. Diese alte Debugging-Lösung für geräteübergreifende Anwendungen ist aber gegenwärtig nicht dokumentiert.
Hinweis: Beim Remote-Win32-Debuggen können Sie weiterhin den vorhandenen (alten) Remote-Debugger für das Remote-Desktop-Debuggen verwenden. Bedenken Sie dabei aber, dass Sie – wie früher – alle Dateien manuell auf die Zielplattform kopieren müssen. Informationen zur Verwendung des alten Remote-Debuggers finden Sie unter Überblick zum externen Debugger und in den zugehörigen Anleitungen. Mit der alten Remote-Debugging-Lösung können sowohl Win32- (wie früher) als auch Win64- und macOS-Anwendungen gedebuggt werden. Die Hilfe enthält jedoch keine detaillierten Informationen über die Verwendung des alten Remote-Debuggers für geräteübergreifendes Debuggen.
Hinweis: Beim Versuch, eine 64-Bit-Android-Anwendung auf einem 32-Bit-Android-Gerät aufzurufen, wird anstelle einer Fehlermeldung bezüglich der Inkompatibilität die folgende Fehlermeldung angezeigt: LLDB-Kernel kann nicht gestartet werden: ‘./lldb-Server[17]: Syntaxfehler: nicht erwartete ‘)’.
Hinweis: Wenn Sie Probleme beim Debuggen haben, kann unser Support-Team nach Debugger-Protokollen fragen. Informieren Sie sich daher darüber, wie Sie die Debugger-Protokolle für RAD Studio-Debugger aktivieren.

Anforderungen für das geräteübergreifende Debuggen in RAD Studio

  • Für eine Anwendung, die auf der Zielplattform macOS, iOS-Gerät - 64 Bit ausgeführt wird, sind der Platform Assistant und ein Verbindungsprofil zum Einrichten einer Debug-Sitzung erforderlich.
    Für die Android-Zielplattform und die systeminterne Win64-Zielplattform werden weder der "Platform Assistant" noch ein Verbindungsprofil benötigt.
  • Für einige Zielplattformen ist es erforderlich, dass Sie in der IDE ein SDK hinzufügen, wie im nächsten Abschnitt Anforderungen für geräteübergreifendes Debuggen beschrieben.

Normalerweise werden sowohl der Debugger als auch der zu debuggende Prozess auf der Zielplattform ausgeführt. Das gilt für das iOS-Gerät und das Android-Gerät. In jedem Fall meldet der Debugger aber den Status und interagiert mit Ihnen auf dem Entwicklungs-PC in der RAD Studio-IDE. Das bedeutet, dass die Verwendung der geräteübergreifenden Debugger weitgehend der Verwendung des integrierten Debuggers für Win32-Anwendungen entspricht. Allgemeine weiterführende Informationen über das Debuggen finden Sie unter Überblick zum Debuggen.

Voraussetzungen für das plattformübergreifende Debuggen:

  • Für Ihre Anwendung muss eine Zielplattform aktiviert sein:
    • 64-Bit-Windows (auf einem 32-Bit-Windows-Entwicklungs-PC)
    • macOS
    • iOS
    • Android (Android-Gerät)
    • Remotes 32-Bit-Windows oder 64-Bit-Windows.
  • Zielplattformabhängig:
    • Für die Plattformen macOS und iOS:
      Hinweis: macOS-Anwendungen müssen Sie weder bereitstellen noch mit einer Codesignatur versehen.
      • Ihr Entwicklungssystem muss über eine Live-Verbindung zu dem Mac verfügen (d. h. Verbindung testen auf der Seite Verbindungsprofil-Manager muss erfolgreich sein).
        Bei dieser Verbindung können Sie den integrieren Debugger und den Bereitstellungs-Manager verwenden.
      • Zusätzlich muss für die Plattform iOS-Gerät ein bereitgestelltes iOS-Gerät über ein USB-Kabel mit dem Mac verbunden sein.
      Hinweis: Mit dem integrierten Debugger können Sie keine iOS-Apps debuggen, die für die Plattformkonfiguration Anwendungs-Store compiliert wurden.
    • Für die 32-Bit-Windows-Plattform:
      • Sie müssen den "Platform Assistant" nicht verwenden, weil Ihre Debug-Umgebung sich auf dem Computer befindet, und der integrierte Debugger automatisch ausgeführt wird. Wenn Sie aber für eine 32-Bit-Windows-Anwendung ein Remote-Debugging durchführen möchten, müssen Sie die Option Mit externen Debug-Symbolen in Projekt > Optionen > Delphi-Compiler > Linken auf True setzen.
    • Für die 64-Bit-Windows-Plattform:
      • Bei einer Verbindung zu einem Remote-64-Bit-PC:
        • Sie müssen den "Platform Assistant" und ein Verbindungsprofil verwenden.
        • Ihr Entwicklungssystem muss über eine Live-Verbindung zu dem Remote-64-Bit-PC verfügen (d. h. Verbindung testen auf der Seite Verbindungsprofil-Manager muss erfolgreich sein). Bei dieser Verbindung können Sie den integrieren Debugger und den Bereitstellungs-Manager verwenden.
      • Bei einem PC-Entwicklungssystem mit einem 64-Bit-Windows-Betriebssystem:
        • Sie müssen den "Platform Assistant" nicht verwenden, weil Ihre Debug-Umgebung sich auf dem Computer befindet, und der integrierte Debugger automatisch ausgeführt wird.
        • Sie können aber optional den "Platform Assistant" und ein Verbindungsprofil auswählen, genauso wie für ein Remote-Zielsystem mit 64-Bit-Windows. Dadurch haben Sie die Möglichkeit, den Bereitstellungs-Manager zu verwenden.
    • Ein SDK ist für die folgenden Plattformen und Anwendungstypen erforderlich (im SDK-Manager):
      • Geräteübergreifende FireMonkey-C++-Anwendungen für die Plattform macOS
      • Geräteübergreifende FireMonkey-Delphi-Anwendungen für die Plattform iOS-Gerät - 64 Bit
      • Geräteübergreifende FireMonkey-Delphi-Anwendungen für die Plattform Android

Debuggen mit C++Builder für 64-Bit-Windows

Beim Debuggen einer C++-Anwendung für 64-Bit-Windows sind einige Debugger-Funktionen nicht verfügbar.

Weitere Informationen finden Sie unter Debuggen von C++Builder-Anwendungen für 64-Bit-Windows.

Starten des Debuggers mit einem "Start"-Befehl

Wenn alle Anforderungen für das geräteübergreifende Debuggen erfüllt sind, wird mit dem Befehl Start Folgendes ausgeführt:

  • Die benötigten Dateien werden vom Host-PC auf den im Verbindungsprofil angegebenen Zielcomputer kopiert.
  • Die Anwendung wird in einem für die Plattform geeigneten Debugger ausgeführt.

Wenn beispielsweise macOS die aktive Plattform ist, wird die ausführbare Datei auf den Mac kopiert.

Sie können mit einem beliebigen Standard-Start-Befehl das Debuggen einer geräteübergreifenden Anwendung (für macOS oder Win64) starten:

Starten des Debuggers mit "Mit Prozess verbinden" und "Prozess laden: Extern"

Zum Ausführen und Debuggen einer compilierten Binärdatei auf einem Computer mit dem "Platform Assistant"-Server (entweder einem Remote-PC oder einem Mac), können Sie die folgenden Befehle verwenden:

  • Mit Prozess verbinden, um einen lokal oder remote ausgeführten Prozess zu debuggen. Die Verwendung des "Platform Assistant" und eines Verbindungsprofils wird empfohlen. Einige Plattformen werden nicht unterstützt, wie im Dialogfeld Mit Prozess verbinden angegeben.
    Hinweis: Eine Verbindung mit einem ausgeführten Prozess wird für den Embarcadero iOS32-Geräte-Debugger, Embarcadero iOS64-Geräte-Debugger oder den Embarcadero Android-Debugger nicht unterstützt.
  • Prozess laden: Lokal, um einen lokalen Debug-Prozess zu laden.
    Hinweis: "Prozess laden: Lokal" wird für den Embarcadero iOS32-Geräte-Debugger, den Embarcadero iOS64-Geräte-Debugger oder den Embarcadero Android-Debugger nicht unterstützt.
  • Prozess laden: Extern, um einen Debug-Prozess zu laden und ihn auf einem Remote-Computer auszuführen (mit einigen Einschränkungen bezüglich Verbindungsprofilen). Einige Plattformen werden nicht unterstützt, wie im Dialogfeld Prozess laden: Extern angegeben.
    Hinweis: "Prozess laden: Extern" wird für den Embarcadero Android-Debugger nicht unterstützt.
    Die Verwendung des "Platform Assistant" und eines Verbindungsprofils wird empfohlen.

Probleme mit der zeitlichen Steuerung bei "Prozess laden"

Wenn beim Debuggen einer macOS-App die App sofort nach dem Aufruf von Prozess laden abstürzt, sollten Sie entweder die Option Nicht ausführen oder Bis zu Programmeintrittspunkt ausführen (unter "Nach dem Laden") auswählen. Durch beide Optionen können Probleme mit der zeitlichen Steuerung behoben werden, die auftreten, wenn die App ausgeführt wird und auf Debug-Ereignisse trifft, der Debugger aber noch nicht eingerichtet und bereit zur Verarbeitung der Ereignisse ist. Diese Probleme bei der zeitlichen Steuerung können dazu führen, dass der Debugger hängen bleibt.

Siehe auch