Ab DB 39.5.11

Python Debugging

question Problem

  • Durch die komplexen Möglichkeiten, Makros und Wertebereiche zu definieren, entstehen vielfältige Fehlerquellen. Entstandene Fehler können nur mit hohem Aufwand durch reines Durchdenken oder Dialogmeldungen identifiziert werden.

target-blue Ziele

  • Ein Debugger gibt dem Fehlersuchenden die Möglichkeit, den Programmcode während der Ausführung Zeile für Zeile durchzugehen oder an bestimmten Punkten anzuhalten, um die Werte, die gerade gesetzt sind, zu überprüfen und Fehler im Programmverlauf zu finden.

Debuggen mit rpdb2 / Winpdb

info Informationen

  • Mit Hilfe der rpdb2 Bibliothek lässt sich der Python-Interpreter innerhalb von PLANTA von außerhalb des Applikationsservers debuggen
  • Winpdb Python Platform Independent Python Debugger liefert hierbei eine einfache GUI Applikation, um sich mit dem Debugger zu verbinden

Starten des Debuggers

info Informationen

  • Der Debugger kann in jedem Python-Programm verwendet werden, also in
    • Python-Wertebereichen,
    • Python-Makros und
    • in externen Python-Skripten.
  • Hierzu kann auf die Debugger API zurückgegriffen werden oder der Debugger über den Menüpunkt Tools -> Python -> Winpdb Debugger starten gestartet werden.

from ppms.debugging import start_embedded_debugger

def function_to_debug():
    # ...
    start_embedded_debugger(password='foobar')
    # ...

Grafisches debuggen mit Winpdb

info Informationen

  • Winpdb eignet sich gut, um PLANTA zu debuggen
  • Hat man den Debugger wie oben beschrieben gestartet, muss man sich mit Winpdb verbinden:
    • Die Option Attach in dem Menü File auswählen
    • Das Passwort eingeben
    • Die Adresse des Rechners angeben auf dem das Skript läuft
    • Debugger Instanz auswählen und verbinden
  • Nun erscheint eine Oberfläche, auf der im rechten oberen Fensterbereich der Quelltext zu sehen ist, an dem unterbrochen wurde
  • Mit Hilfe von Funktionstasten kann das Programm durchlaufen werden, hierzu befinden sich Informationen in dem Menüeintrag Controls.
  • Das Setzen von Unterbrechungspunkten (Breakpoints) wird mit der Funktionstaste F9 durchgeführt.
  • Über File -> Open Source kann der Pfad zu einer Python-Datei im Server-Verzeichnis angegeben werden um darin Breakpoints zu setzen

tip Tip:

  • Um das ständige Neuladen der GUI zu unterbinden, müssen die Python Service Functions in der planta_server.conf deaktiviert werden, indem die Einstellung ENABLE_PY_SERVICE_FUNCTIONS auf 0 gesetzt wird

Debuggen mit PyCharm

info Informationen

  • "PyCharm Professional" beinhaltet einen remote Debugger, der ebenfalls genutzt werden kann, um PLANTA zu debuggen

Starten des Debuggers

info Informationen

  • Zuerst muss in PyCharm, dass remote debugging eingerichtet und gestartet werden
  • Danach kann in PLANTA über den Menüpunkt Tools -> Python -> Mit PyCharm Debugger verbinden sich mit dem Debugger verbunden werden

Ab S 39.5.1

Python Debugging

info Informationen

note Remote-Debugging

  • Bei server- und clientbasierten Anwendungen ist es oftmals hilfreich, ein Debugging von einem anderen Ort aus durchführen zu können

Vorbereitungen

info Informationen
  • Für den Debug-Server muss eine aktuelle Version von Eclipse mit pydev installiert sein.
  • Anwendungsseitig wird das Python-Verzeichnis py/ des PLANTA-Servers benötigt, welches eine größtenteils vorbereitete Version des =pysrc/=-Verzeichnisses enthält und insoweit geändert werden muss, dass es die Lokation der Debugging-Umgebung wiederspiegelt.

Vorgehensweise

more Mapping von Quellcodepfaden zwischen Eclipse und dem in den PLANTA Server eingebetteten Python-Interpreter
  • Die Datei paths.py im Verzeichnis pysrc/ auf Ihrem Gerät muss geändert werden.
  • Die Variable PATHS_FROM_ECLIPSE_TO_PYTHON zum Debug-Client und -Server.
  • Da der Server sein eigenes Arbeitsverzeichnis kennt, sind die durch os.path.abspath() bestimmten Werte korrekt und es muss lediglich der Pfad zu Ihrem lokalen PLANTA-Server-Python-Code-Verzeichnis und das OLE-Verzeichnis des Clients, den Sie verwenden möchten, angepasst werden (das Arbeitsverzeichnis Ihres Testsystem-Clients mit angehängtem =\Ole=-Unterverzeichnis).
  • Die Variable DEBUG_CLIENT_SERVER_TRANSLATION muss in pydevd_file_utils.py ebenfalls auf True gesetzt werden, was in der über TFS verfügbaren Version bereits der Fall sein sollte.
more Aktivieren von pydevd über planta_server.conf
  • Um den Debugger zu aktivieren, müssen Sie sowohl config/planta_server.conf im Serververzeichnis Ihres Testsystems als auch die relevanten Parameter anpassen.
Parameter Art WERT
DEBUG_PYTHON boolean 1
DEBUG_PYTHON_HOST string host Verwendung von Eclipse mit PyDev
DEBUG_PYTHON_PORT number same wie im Remote-Debug-Server von PyDev konfiguriert, bitte wählen Sie einen beliebigen Wert aus und verwenden Sie nicht den Standardwert 5678
  • Der Port des Python-Debug-Servers kann in Eclipse unter Verwendung von Window --> Preferences --> PyDev --> Debug --> Port für Remote-Debugger konfiguriert werden.
more Mit Debug Host verbinden
  • In Eclipse kann eine Debug-Ansicht geöffnet und der Server gestartet werden.
    • warning Der Debug-Server muss bereits laufen bevor die Funktion planta_py_debug.debug_break() im Python-Code zum ersten Mal aufgerufen wird.
  • Den PLANTA-Server sowie den passenden PLANTA-Client starten sobald der Server Verbindungen akzeptiert.
    • Die Anwendung kann nun debuggt werden.
more Breakpunkt setzen
  • planta_py_debug und py_debug from planta_py_debug müssen importiert und die Debug-Flag über py_debug.set_debug_flag(True) freigeschaltet werden.
  • Der Aufruf von planta_py_debug.debug_break() in Python stellt eine Verbindung zu Eclipse her und ermöglicht das zukünftige Setzen weiterer Breakpunkte.
    • Jeder Aufruf von planta_py_debug.debug_break() verhält sich wie ein programmierter Breakpunkt, weshalb hierbei Vorsicht geboten ist.
  • warning Derzeitige Einschränkung: Seit DB-Resident existieren Python-Objekte serverseitig nicht mehr als tatsächliche Dateien; PyDevd zeigt an, dass Breakpoints nicht gesetzt werden können, obwohl das Setzen einwandfrei funktioniert.
  • info Beim Verlassen eines Python-Kontextes trennt sich die Python-Laufzeit unter Debug vom Debug-Server. Um zum Remote-Debugging zurückzukehren muss planta_py_debug.debug_break() erneut aufgerufen werden.

Ab S 39.5.0

Python-Debugging

stop Stop
  • Bei dieser Server-Version funktioniert diese Funktion nicht.

Bis S 39.5.0

Python Debugging

question Problem
  • Durch die komplexen Möglichkeiten, Makros und Wertebereiche zu definieren, entstehen vielfältige Fehlerquellen. Entstandene Fehler können nur mit hohem Aufwand durch reines Durchdenken oder Dialogmeldungen identifiziert werden.

target-blue Ziele

  • Ein Debugger gibt dem Fehlersuchenden die Möglichkeit, den Programmcode während der Ausführung Zeile für Zeile durchzugehen oder an bestimmten Punkten anzuhalten, um die Werte, die gerade gesetzt sind, zu überprüfen und Fehler im Programmverlauf zu finden.
  • Download Winpdb Python Platform Independent Python Debugger

Manuelle Benutzung des Debuggers

info Informationen
  • Der Debugger kann in jedem Python-Programm verwendet werden, also in
    • Python-Wertebereichen,
    • Python-Makros und
    • in externen Python-Skripten.
  • Hierzu wird dieser mit Hilfe der folgenden Zeilen in den Python-Code eingefügt:
import ppms_debug

ppms_debug.start_debugger(<string>)

note Details

  • Der Parameter <string> steht hier für eine Zeichenkette, diese muss mit einem Buchstaben beginnen und darf keine Umlaute enthalten.
    • Sie stellt einerseits ein Passwort zum Schutz der Verbindung zwischen Debugger und dessen GUI dar, außerdem ist sie ein Identifizierer, mit dessen Hilfe die richtige Verbindung aufgebaut werden kann.
  • Als GUI wird Winpdb verwendet.
  • Wird das zu überprüfende Skript (inklusive den oben erwähnten eingefügten Zeilen) gestartet, hat man 30 Sekunden Zeit,
    • die Option Attach in dem Menü File zu öffnen,
    • in dem Dialogfenster das eben erwähnte Passwort anzugeben,
    • die Adresse des Rechners anzugeben auf dem das Skript läuft und
    • auf den Eintrag zu klicken, der in dem darauffolgenden Fenster erscheint.
  • Nun erscheint eine Oberfläche, auf der im rechten oberen Fensterbereich der Python-Quelltext der Datei ppms_debug.py zu sehen ist.
    • Um eine Sicht auf das eigentlich zu überprüfende Skript zu erhalten, muss man nun auf den unter start_debugger stehenden Eintrag in dem sich links unten befindenden Fenster namens Stack klicken.
  • Mit Hilfe von Funktionstasten kann das Programm durchlaufen werden, hierzu befinden sich Informationen in dem Menüeintrag Controls.
  • Das Setzen von Unterbrechungspunkten (Breakpoints) wird mit der Funktionstaste F9 durchgeführt.

Automatische Benutzung des Debuggers aus PLANTA

info Informationen
  • Der Debugger kann aus PLANTA über den Menüpunkt Tools -> Debugger einschalten gestartet werden.
  • Hierbei wird sowohl der Debugger am Server-, als auch die grafische Oberfläche(WINPDB) für das Debuggen gestartet.
    • Der Zielordner des Debuggers WINPDB wird in der Variable @G99030 hinterlegt.

Topic attachments
I Attachment Action Size Date Who Comment
jpgJPG debugger_icon.JPG manage 1.0 K 2009-08-28 - 17:28 UnknownUser Debugging Icon
Topic revision: r28 - 2018-03-19 - 18:58:15 - JulianHammer








 
  • Suche in Topic-Namen

  • Suche in Topic-Inhalten