Inhaltsverzeichnis

Debuggen mit ETCobol

TAA unterstützt auch bei der Nutzung von ETCobol das Debuggen von Cobol-Code, indem bei Angabe des entsprechenden Implementierungstyps für das Modul der Debugger (in diesem Fall Visual Studio Code) gestartet wird.

Der Ityp dafür ist „ETCobol“. Die Ispc enthält die Angabe der Dll und des Entrypoints, wie bei Ityp dllCob32. Prinzipiell kann die Ispc-Angabe somit unverändert bleiben; um aber die Debug-Funktionalität von Visual Studio Code voll ausschöpfen zu können, empfiehlt es sich, für das zu debuggende Modul eine separate Dll zu erzeugen, die nur dieses Modul enthält, und die Ispc entsprechend anzupassen. Die Befehlszeile für den link wäre z.B.:

cobc <Name>.cbl -w -g -debug -preprocess="<preproc.cmd>"

Bezüglich der weiteren Einstellungen für das Arbeiten mit ETCobol und Visual Studio Code verweisen wir auf die Dokumentation von EasiRun.

Wenn TAA in der Lage ist, das Projekt- und/oder Sourceverzeichnis für ETCobol aus der Ispc-Angabe abzuleiten, wird das Projektverzeichnis und/oder die Cobol-Datei in Visual Studio Code geladen.

Ermittlung der Pfade für Projekt/Workspace

Bei der Ermittlung der Pfade für Projekt- und Sourceverzeichnis wird davon ausgegangen, dass die in der Ispc angegebene Dll entweder in einem Unterverzeichnis wie obj (wie vorgeschlagen von EasiRun) oder bin (wie angefordert seitens der AL) liegt, oder im Hauptverzeichnis vom Projekt/Workspace.

Die Infrastruktur nutzt also den Pfad von der in der Ispc angegebenen DLL. Mit Hilfe des „.vscode“-Verzeichnisses wird erkannt, ob das Verzeichnis ein Projekt beinhaltet, welches von Visual Studio Code verwendet wird. Wenn im Verzeichnis der DLL kein „.vscode“-Verzeichnis vorhanden ist, wird im übergeordneten Verzeichnis gesucht. Neben dem Projektverzeichnis versucht die Infrastruktur auch die Cobol-Datei zu ermitteln. Hierzu wird das Projektverzeichnis (oder, falls dies nicht ermittelt werden kann, das Verzeichnis mit der DLL, welche in de Ispc angegeben ist) mit sämtlichen Unterverzeichnissen durchsucht.

Manueller Attach

Leider ist es mit Visual Studio Code nicht möglich, automatisch das Debuggen des Moduls zu starten. Um die Verbindung manuell herstellen zu können, zeigt TAA einen Dialog an, in der u.A. die Prozess-ID angegeben ist, mit der der Attach1) von Visual Studio Code aus erfolgen muss. Diese Process-ID kann in die Zwischenablage kopiert werden. Bestätigen Sie die Messagebox mit OK, nachdem Sie den Attach in Visual Studio Code vorgenommen haben.

Wenn Sie ohne vorherigen Attach OK klicken, läuft die Anwendung weiter, als wäre kein Debugging angefordert worden.

Wenn man in Visual Studio Code „Debuggen Beenden“ wählt, beendet sich der gesamte Prozess, nicht nur das Debuggen!

Andere Möglichkeiten zum Debuggen

Alternativ zu dem Ityp ETCobol kann auch die Angabe debugbreak genutzt werden; bei mit ETCobol implementierten Modulen wird allerdings nicht Visual Studio Code gestartet, sondern nur die Prozess-ID angezeigt, mit der die Verknüpfung manuell erfolgen kann, wie oben beschrieben.

Als weitere Alternative kann die ETCobol-Umgebungsvariable COB_DEBUG_MODULES genutzt werden; diese sorgt dafür, dass ETCobol bei Erreichen des Moduls anhält und auf einen Attach über Visual Studio Code wartet.
Achtung - wenn man das Zurücksetzen dieser Variablen vergisst, bleibt ETCobol auch bei späteren Ausführungen der Anwendung bei dem Modul stehen, und die Anwendung scheint sich aufgehängt zu haben!

1)
Wie man Visual Studio Code für die Verwendung mit ETCobol einrichten muss, und wie der Debugger in Attach Mode verwendet werden soll, kann man im Handbuch von EasiRun nachlesen