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

785px-Debub Macok.png

On the macOS platform, the debugger needs file permissions. Debugging on macOS is a privileged operation; only a process with adequate access rights can act as a debugger. For more information, see Ü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

IOS Debugging1.png

  • Beim Debuggen auf den Zielplattformen iOS-Simulator, iOS-Gerät - 32 Bit und iOS-Gerät - 64 Bit stehen einige herkömmliche Debugger-Funktionen nicht zur Verfügung. Weitere Informationen finden Sie unter Debuggen von iOS-Apps.

Debuggen von Android-Anwendungen

Android Debugging.png

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. Der integrierte Debugger unterstützt Delphi- und C++-Anwendungen mit Ausnahme der C++-64-Bit-Windows-, Delphi-iOS- und Android-Plattformen.

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

  • Embarcadero Win32-Debugger für Delphi (auf einem PC mit einem 32-Bit-Windows-Betriebssystem)
  • Embarcadero Win32-Debugger für C++ (auf einem PC mit einem 32-Bit-Windows-Betriebssystem)
  • Embarcadero Win64-Debugger für Delphi (auf einem PC mit einem 64-Bit-Windows-Betriebssystem)
  • Embarcadero Win64-Debugger für C++ (auf einem PC mit einem 64-Bit-Windows-Betriebssystem)
  • Embarcadero macOS-Debugger für 32 Bit (auf einem Mac mit einer 32-Bit-Version von macOS)
  • Embarcadero macOS-Debugger für 64 Bit (auf einem Mac mit einer 64-Bit-Version von macOS)
  • Embarcadero iOS-Debugger für den iOS-Simulator (auf einem Mac)
  • Embarcadero iOS32-Debugger für 32-Bit-iOS-Geräte (auf einem angeschlossenen 32-Bit- oder 64-Bit-iOS-Gerät)
  • Embarcadero iOS64-Debugger für 64-Bit-iOS-Geräte (auf einem angeschlossenen 64-Bit-iOS-Gerät)
  • Embarcadero Android-Debugger für Geräte mit 32-Bit-Android (auf einem angeschlossenen 32-Bit-Android-Gerät)
  • Embarcadero Android-Debugger für Geräte mit 64-Bit-Android (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, and __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 ‘)’.

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

  • Für Anwendungen, die auf einer der Zielplattformen macOS, iOS-Gerät - 32 Bit, iOS-Gerät - 64 Bit oder iOS-Simulator ausgeführt werden, sind der Platform Assistant und ein Verbindungsprofil erforderlich, um eine Debug-Sitzung einzurichten.
    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 (Delphi unterstützt entweder den iOS-Simulator oder die zwei Plattformen iOS-Gerät; C++ unterstützt nur die zwei Plattformen iOS-Gerät)
    • 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 beiden Plattformen iOS-Gerät ein bereitgestelltes iOS-Gerät über ein USB-Kabel an den Mac angeschlossen 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 Plattformen iOS-Gerät - 32 Bit und 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