Debug-Compiler-Optionen

Folgende Compileroptionen sind für das Debugging von Programmen von Bedeutung, die mit COBOL für AIX und PL/I für AIX geschrieben wurden:

Tabelle 1. Debug-Compiler-Optionen für COBOL für AIX und PL/I für AIX
Compileroption Definition
-g Fordert den Compiler auf, Debuginformationen für den Quellcode zu generieren. Sie müssen diese Option angeben, wenn Sie für Ihren Code ein Debug ausführen möchten.
-qtest Fordert den Compiler auf, Debugsymbolinformationen für den Quellcode zu generieren. Sie müssen diese Option angeben, wenn Sie Variablen in Ihrem Code anzeigen und ändern möchten.

Die Angabe von -qtest impliziert auch -g, wodurch neben Zeileninformationen auch Symbolinformationen generiert werden.

Anmerkung: Die Compileroption -qtest ist nur für das Debugging von PL/I für AIX-Programmen relevant.

Diese Compileroptionen sind von Bedeutung für das Debugging von Programmen, die mit IBM XL C/C++ für AIX und IBM XL C/C++ für Linux geschrieben wurden. Sie sind nicht von Bedeutung für Programme, die mit COBOL für AIX und PL/I für AIX geschrieben wurden.

Tabelle 2. Compileroptionen für das Debugging für IBM XL C/C++ für AIX und IBM XL C/C++ für Linux
Compileroption Definition
-g

-g fordert den Compiler auf, Debuginformationen für den Quellcode zu generieren. Sie müssen diese Option angeben, wenn Sie für Ihren Code ein Debug ausführen möchten.

Der Compiler unterstützt möglicherweise auch die folgenden erweiterten Stufen von -g, um die ausführbare Größe zu verringern oder die Anwendungsleistung zu verbessern (besonders in Kombination mit der Option -O2), während eine gewisse Stufe der Debugfähigkeit beibehalten wird:

-g9 stellt Funktionalität von -g bereit. Änderungen an Variablenwerten durch den Debugger werden in den Speicher geschrieben und alle ausführbaren Zeilen können vom Debugger schrittweise durchlaufen werden.

-g8 verringert den Umfang der Debuginformationen für Variablen. Änderungen an Variablenwerten durch den Debugger werden möglicherweise nicht in den Speicher zurückgeschrieben. Alle ausführbaren Zeilen können vom Debugger schrittweise durchlaufen werden.

-g5 verringert den Umfang der Debuginformationen für Variablen. Änderungen an Variablenwerten durch den Debugger werden möglicherweise nicht in den Anwendungsspeicher zurückgeschrieben. Mit der Option -g5 wird auch der Umfang der Debuginformationen verringert, die für ausführbare Zeilen gespeichert werden. Nur die erste ausführbare Zeile jeder Funktion und ausgewählte Steuerungsablaufanweisungen können vom Debugger schrittweise durchlaufen werden. Andere Zeilen erscheinen als 'nicht ausführbar' und der Debugger kann die Zeilen nicht schrittweise durchlaufen.

-qfullpath Bewirkt, dass der vollständige Name aller Quellendateien den Debuginformationen hinzugefügt wird. Dies kann dem Debugger das Suchen von Quellendateien erleichtern.
-qheapdebug Zwingt das resultierende Programm zur Verwendung des Debug-Heap-Speichers. Wenn eine Heapspeicherbeschädigung auftritt, kann sie der Debugger feststellen und er kann an dem Punkt stoppen, an dem sie festgestellt wurde.
Anmerkung: Diese Option wird nur unter AIX unterstützt.
-qlinedebug Unterdrückt die Generierung von Debuginformationen, die es Ihnen ermöglichen, Variablen in Ihrem Code zu sehen. Dies kann die Größe der resultierenden ausführbaren Datei erheblich reduzieren, insbesondere bei C++-Programmen. Diese Option wird empfohlen für den Fall, dass Sie Ihren Code optimiert haben, da es die Optimierung dem Debugger unmöglich macht, Variablenwerte verlässlich anzuzeigen.
-qtbtable Steuert die Generierung einer Traceback-Tabelle am Ende aller Funktionen. Die Angabe von -qtbtable=none ist nicht empfehlenswert, wenn für den Code ein Debug ausgeführt werden soll.
-qdbxextra Zwingt den Compiler zur Aufnahme von Debuginformationen für Typen, auf die nicht verwiesen wird. Dies ist normalerweise nicht empfehlenswert, da es zu einer sehr großen ausführbaren Datei führt.
Anmerkung: Diese Option wird nur unter AIX unterstützt.
-qsmp=noopt Standardmäßig führt die Option -qsmp zur Durchführung von Optimierungen an den ausgelagerten Funktionen (dem Code in den parallelen Regionen). Diese Optimierungen führen zu einer Diskrepanz zwischen dem Programm und den Debuginformationen, so dass der Debugger bei der Ausführung des ausgelagerten Codes falsche Werte sowohl für private als auch gemeinsam genutzte lokale Variablen anzeigt. Die Verwendung von -qsmp=noopt statt -qsmp inaktiviert diese Optimierungen und erleichtert die Ausführung eines Debugs für die parallelen Regionen.

Rückmeldung