Neu vorgestellt

Erweiterungen im Debugger

In den letzen Wochen haben wir über geplante Erweiterungen für die kommende Version berichtet. Auch für den Debugger haben wir hilfreiche Erweiterungen vorgesehen.


Ermitteln des Objekttyps

Aktuell lässt sich bei Doppelklick auf eine Variable des Datentyps "handle" lediglich dessen Wert ermitteln. Ab der kommenden Version wird zusätzlich der Typ des Objekts im Fenster der "überwachten Variablen" ausgegeben.

Überwachte Variablen mit Objekttyp
Anzeige von Datensatzpuffer-Inhalten

Neben den Feldern des globalen Datensatzpuffers können nun auch die Feldinhalte eines mit der Funktion RecBufCreate() erzeugten Puffers eingesehen werden. Dazu wird der Handle eines Datensatzpuffers und die gewünschten Felder in das Debugger-Fenster "Überwachte Variablen" übernommen. Über einen Doppelklick auf den Handle werden die Inhalte des erzeugten Datensatzpuffers angezeigt. Ein weiterer Doppelklick schaltet die Anzeige wieder auf den globalen Puffer um.

Beispiel:

// Datensatzpuffer anlegen
tBuf # RecBufCreate(ADR.D.Adressen);

// globaler Datensatzpuffer
ADR.aFirmenbez # 'Müller & Schmidt'

// erzeugter Datensatzpuffer
tBuf->ADR.aFirmenbez # 'Müller';
...
...

Im obigen Beispiel besitzt das Feld "ADR.aFirmenbez" zwei unterschiedliche Inhalte.
Standardmäßig wird im Debugger der Inhalt des globalen Datensatzpuffers angezeigt:

Überwachte Variablen – globaler Datensatzpuffer

Nach einem Doppelklick auf die Variable "tBuf" schaltet die Anzeige auf den erzeugten Datensatzpuffer um:

Überwachte Variablen – erzeugter Datensatzpuffer

Auf diese Weise lässt sich sehr einfach die Anzeige zwischen globalen und erzeugten Puffer wechseln.

6 Kommentare

6 Kommentare “Erweiterungen im Debugger”

  1. @Daniel
    Die Option "Schneller Einfügemodus beim Suchen" ist bei mir gesetzt, aber, dass ich mit Shift+Doppelklick direkt die aktuelle Variable in die Überwachung übernehmen kann, wusste ich noch nicht. Vielen Dank für den Tipp.

  2. @Kilian
    Im Debugger steht bereits eine Funktion zum direkten Einfügen der im Kontext aktiven Variable zur Verfügung. Wenn Sie mit gedrückter Shift-Taste auf die Variable drücken wird nur die aktive Variable gesucht und in der Suchliste angezeigt.

    Ist in den Einstellungen des Debuggers auf der Seite "Allgemein" der Haken bei "Schneller Einfügemodus beim Suchen" gesetzt, wird die aktive Variable direkt in die Liste der überwachten Variablen aufgenommen statt nach ihr zu suchen.

  3. Eine weitere Anmerkung zum Debugger:

    Wenn man eine Variable doppelt anklickt, wird sie leider nicht immer sofort in die Liste der überwachten Variablen übernommen.

    Sie wird automatisch übernommen, wenn der Variablenname in der gesamten Prozedur eindeutig ist, sonst wird die Variable mit Kontextangabe in die Suchliste geschrieben. Dies ist insbesondere dann unpraktisch, wenn man eine Prozedur mit vielen Hilfsfunktionen, die alle mehr oder weniger dieselben Variablennamen verwenden, untersucht.

    Da eigentlich immer eindeutig fest steht, was beim Doppelklick im Debugger gemeint ist (eine lokale Variable der akt. Funktion, eine lokale Variable der akt. Prozedur, eine globale Variable usw.), sollte die entsprechende Variable direkt in die Überwachungsliste aufgenommen werden. Dass die Suchliste mit Kontextangabe befüllt wird, ist selbstverständlich nützlich und sollte beibehalten werden.

  4. Nicht ganz, es fehlen noch weitere Dinge! Enorm nützlich und hilfreich wäre zum Beispiel, wenn zu einem Handle nicht nur der Typ sondern auch dessen Eigenschaften im Debugger ausgelesen, respektive angezeigt werden könnten. Zurzeit muss man sich die gewünschten Eigenschaften immer mühselig mit DbgTrace() oder anderweitig ausgeben lassen.

Kommentar abgeben