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

Führen Sie zum Debuggen von macOS-Anwendungen die folgenden Schritte aus:

Im Projekte-Fenster:

  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:
    • Plattform
    • Hostname
    • Port-Nummer
    • Passwort (optional)
  3. Wechseln Sie zu Tools > Optionen > Bereitstellung > SDK-Manager und fügen Sie die SDK-Version hinzu.

Im Platform Assistant-Server (PAServer):

  1. Vergewissern Sie sich, dass der PAServer den Remote-Debugger für macOS aufruft.
Hinweis: Beim Debuggen auf den Zielplattformen macOS 64 Bit und macOS ARM 64 Bit stehen einige herkömmliche Debugger-Funktionen nicht zur Verfügung. Einzelheiten über die Entwicklung von macOS-Apps finden Sie unter macOS-Anwendungsentwicklung.

Debuggen von iOS-Apps

Führen Sie zum Debuggen von iOS-Anwendungen die folgenden Schritte aus:

Im Projekte-Fenster:

  1. Fügen Sie die Zielplattform hinzu oder aktivieren Sie sie (iOS-Gerät - 64-Bit).
  2. Weisen Sie das Verbindungsprofil über diesen Pfad zu: Tools > Optionen > Bereitstellung > Verbindungsprofil-Manager und legen Sie Folgendes fest:
    • Plattform
    • Hostname
    • Port-Nummer
    • Passwort (optional)
  3. Wechseln Sie zu Tools > Optionen > Bereitstellung > SDK-Manager und fügen Sie die SDK-Version hinzu.

Im Platform Assistant-Server (PAServer)

  1. Vergewissern Sie sich, dass der PAServer den Remote-Debugger für iOS aufruft.
  2. Prüfen Sie, ob iOS-Apps bereitgestellt und während der Entwicklung mit der Code-Signatur versehen werden.

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.

Linux-Anwendungen debuggen

Führen Sie zum Debuggen von Linux-Anwendungen die folgenden Schritte aus:

Im Projekte-Fenster:

  1. Fügen Sie die Zielplattform hinzu oder aktivieren Sie sie (Linux 64 Bit).
  2. Weisen Sie das Verbindungsprofil über diesen Pfad zu: Tools > Optionen > Bereitstellung > Verbindungsprofil-Manager und legen Sie Folgendes fest:
    • Plattform
    • Hostname
    • Port-Nummer
    • Passwort (optional)
  3. Wechseln Sie zu Tools > Optionen > Bereitstellung > SDK-Manager und fügen Sie die SDK-Version hinzu.

Im Platform Assistant-Server (PAServer)

  1. Vergewissern Sie sich, dass der PAServer den Remote-Debugger für Linux aufruft.
Hinweis: Beim Debuggen auf den Zielplattformen Linux 64 Bit stehen einige herkömmliche Debugger-Funktionen nicht zur Verfügung. Einzelheiten über die Entwicklung von Linux-Apps finden Sie unter Anwendungsentwicklung für Linux.

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 – für Windows-32-Bit-Anwendungen
  • Embarcadero Windows 64-Bit Debugger für Delphi – für Windows-64-Bit-Delphi-Anwendungen.
  • EmbarcaderoWindows-64-Bit-LLDB-Debugger für C++ – für Windows-64-Bit-C++-Anwendungen.
  • Embarcadero Linux-64-Bit-Debugger – für Linux-64-Bit-Anwendungen.
  • Embarcadero 64-Bit-Debugger für iOS-Geräte – für iOS-64-Bit-Anwendungen, die für iOS-Geräte compiliert wurden.
  • Embarcadero Android-32-Bit-Debugger – für Android-32-Bit-Anwendungen, die für Android-32-Bit-Zielplattformen compliliert wurden.
  • Embarcadero Android-64-Bit-Debugger – für Android-64-Bit-Anwendungen, die für Android-64-Bit-Zielplattformen compliliert wurden.
  • Embarcadero macOS-64-Bit-Debugger – für macOS-64-Bit-Anwendungen.
  • Embarcadero macOS ARM-64-Bit-Debugger – für macOS- und iOS-Simulator-ARM-64-Bit-Anwendungen.

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 RAD Studio-macOS-Debugger auf Ihrem Mac installiert.

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. Hier finden Sie Informationen dazu, wie Sie 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 64 Bit oder 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-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 Linux-64-Bit-Debugger, Embarcadero iOS-Gerät-64-Bit-Debugger, Embarcadero Android-32-Bit-Debugger, Embarcadero Android-64-Bit-Debugger, Embarcadero macOS-64-Bit-Debugger und den Embarcadero macOS ARM-64-Bit-Debugger nicht unterstützt.
  • Prozess laden: Lokal, um einen lokalen Debug-Prozess zu laden.
    Hinweis: "Prozess laden: Lokal" wird für den Embarcadero Linux-64-Bit-Debugger, Embarcadero iOS-Gerät-64-Bit-Debugger, Embarcadero macOS-64-Bit-Debugger und den Embarcadero macOS ARM-64-Bit-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-32-Bit-Debugger und den Embarcadero Android-64-Bit-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