TAA unterstützt auch bei der Nutzung von Cobol-IT das Debuggen von Cobol-Code, indem bei Angabe des entsprechenden Implementierungstyps für das Modul der Debugger (in diesem Fall Cobol Development Studio, kurz CDS) gestartet wird.
Der Ityp dafür ist „CobolIT“. 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 CDS 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 -m -w -g -debug -preprocess="<preproc.cmd>" -o "<Name>.dll"
Entsprechende Angabe in CDS unter Cobol-Properties:
Falls CDS noch nicht aktiv ist, wird dieses durch TAA gestartet.
Wenn TAA in der Lage ist, das Projekt- und Sourceverzeichnis für CobolIT bzw. CDS.exe aus der Ispc-Angabe abzuleiten, wird beim Starten von CDS versucht, direkt die Verbindung zu dem Prozess herzustellen1). Wenn das nicht funktioniert, oder mit derselben Instanz von CDS eine weitere Debug-Session ausgeführt werden soll, muss die Verbindung manuell hergestellt werden.
CobolitDebugIni
) muss die Angabe -application com.cobolit.application
enthalten. 2)CobolitDebugPre
angegeben werden; Default ist die mit der Cobolit-Installation ausgelieferte Datei „setenv_cobolit.bat.3)Wenn eine CDS-Version größer 2.0.1 verwendet wird, muss die Befehlzeile für den Aufruf von CDS in der Config-Section der TAA-Registry angegeben werden:
Befehlszeile mit zu ersetzenden Variablen.
Jede Variable wird von %
begrenzt und durch den dafür angebenen Wert ersetzt; die Angabe kann in beliebiger Groß/Kleinschreibung erfolgen:
CobolItDir
bzw. CobolItDir64
(Langname, in Anführungszeichen)Default ist die Befehlszeile für CDS 2.0.1, ohne postrun-Angabe:
%CDSPATH% pid=%PID% --launcher.ini %INIFILE% wDir=%PROJECT% -data %WORKSPACE% preRun=%PRERUN%
Die Befehlszeile für CDS 2.0.3 könnte so lauten:
%CDSPATH% --launcher.ini %INIFILE% -data %WORKSPACE% -cdaPid=%PID% -cdaWorkDir=%PROJECT% -cdaPreRun=%PRERUN% -showLocation
Es ist damit auch möglich, die Optionen direkt anzugeben, ohne z.B. die Pfadkurznamen von der TAA-Infrastruktur ermitteln zu lassen. Bei Änderung von CobolItDebug-Angaben in der Registry ist ggf. auch die Befehlszeile dort entsprechend anzupassen.4)
Zusätzlich sind folgende Angaben in der Config-Section der TAA-Registry möglich:
Bei der Ermittlung der Pfade für Projekt- und Sourceverzeichnis wird von folgender Verzeichnisstruktur beim Debuggen ausgegangen:
<Workspace>\<Projekt mit Sources >\[bin\]<dlls>
Unter <dlls> sollte die zu debuggenden Dll stehen (Ispc).
Unter <Projekt mit Sources> sollten sowohl die Source-Dateien (.cbl) als auch die Cobolit-Projektinformationen zu finden sein. Wenn diese dort nicht gefunden werden, wird der Pfad weiter nach oben durchsucht. Falls die .cbl-Datei dort nicht gefunden wird, wird anschließend anhand der Konfig-Settings des Moduls, über das Config-Setting SourcePath
sowie einen Default-Pfad, zur Zeit K:\\Src\\$V\\$A\\Module\\$D\\$I.$S
, versucht, die Source zu finden. Wird die Source unter diesem Namen nicht gefunden, wird ausgehend von dem dll-Pfad nach anderen .cbl-Dateien gesucht.
Wenn in dem Pfad entweder keine Cobolit-Projektinformationen oder keine .cbl-Dateien gefunden werden, ist kein automatischer Attach an CDS möglich.
Um die Verbindung manuell herstellen zu können, zeigt TAA eine Messagebox an, in der die Prozess-ID angegeben ist, mit der der Attach von CDS aus erfolgen muss (CDS: rechte Maus auf das Projekt, zu dem das Modul gehört, dann COBOL - Debug Attach). Bestätigen Sie die Messagebox mit OK, nachdem Sie den Attach in CDS vorgenommen haben.
Wenn Sie ohne vorherigen Attach OK klicken, läuft die Anwendung weiter, als wäre kein Debugging angefordert worden.
Wenn man in CDS „Terminate“ wählt, beendet sich der gesamte Prozess, nicht nur das Debuggen!
Alternativ zu dem Ityp CobolIT kann auch die Angabe debugbreak genutzt werden; bei mit CobolIT implementierten Modulen wird allerdings nicht CDS gestartet und verknüpft, sondern nur die Prozess-ID angezeigt, mit der die Verknüpfung manuell erfolgen kann, wie oben beschrieben.
Als weitere Alternative kann die CobolIT-Umgebungsvariable COB_DEBUG_MODULES genutzt werden; diese sorgt dafür, dass CobolIT bei Erreichen des Moduls anhält und auf einen Attach über CDS wartet. Achtung - wenn man das Zurücksetzen dieser Variablen vergisst, bleibt CobolIT auch bei späteren Ausführungen der Anwendung bei dem Modul stehen, und die Anwendung scheint sich aufgehängt zu haben!