11.11 dumpstate()

Mit dieser Funktion werden IDM Zustandsinformationen in die Log- bzw. Tracedatei oder in eine definierte Datei herausgeschrieben.

Der Dumpstate ist eine Zustandsinformation von IDM-relevanten Informationen um die Fehleranalyse einer IDM-Applikation zu erleichtern.

Der Inhalt des Dumpstate ist in verschiedene Abschnitte unterteilt, die variabel und der Fehlersituation angepasst sind. Außerdem wird er von zuvor aufgetretenen Fehlern beeinflusst. Beispielsweise führt eine erfolglose Speicherallokierung bei der nächsten Dumpstate-Ausgabe dazu, dass Informationen bzgl. der Speichernutzung durch den IDM ausgegeben werden. Konnten keine IDM-Objekte oder Bezeichner mehr angelegt werden, wird die Auslastung von IDM-Objekten und Bezeichnern ausgegeben.

Die Dumpstate-Information ist immer zwischen *** DUMP STATE BEGIN *** und *** DUMP STATE END *** eingeschlossen und kann folgende Abschnitte aufweisen:

  • PROCESS: Prozess- und Thread-Nummer, Datum/Uhrzeit.
  • ERRORS: Kompletter Inhalt der gesetzten Fehlercodes.
  • CALLSTACK: Aufruf-Stack – beinhaltet Regeln, DM-Schnittstellenfunktionen und die obersten, vom IDM aufgerufenen, Applikationsfunktionen.
  • THISEVENTS und EVENT-QUEUE: Aktuell verarbeitete thisevent-Objekte und deren Werte sowie Ereignisse die noch in der Warteschlange stehen.
  • USAGE: Anzahl angelegter Objekte, Module und Bezeichner, Speichergröße die vom Regelinterpreter und für die String-Übergabe genutzt wird.
  • MEMORY: Speichernutzung die vom IDM erfassbar ist.
  • SLOTS: Hinweise zu IDM-Objekten die nicht richtig freigegeben wurden.
  • VISIBLE OBJECTS: Liste der sichtbaren Objekte mit ihren Werten.

Um die Ausgabe möglichst klein zu halten, erfolgt sie normalerweise in gekürzter Form. Grundsätzlich immer erfolgt eine Kürzung von IDM-Strings (in "…") auf maximal 40 Zeichen. Ihre Gesamtlänge wird in [ ] angehängt. Bytegrößen-Angaben erfolgen gekürzt auf Kilo-, Mega oder Gigabyte (k/m/g).

Definition

Ab IDM-Version A.05.02.g:

void dumpstate
(
  {   anyvalue Filename input
  { , enum     State    := dump_error input } }
)
void dumpstate
(
  { { anyvalue Filename input, }
      enum     State    := dump_error input }
)

Bis IDM-Version A.05.02.f4:

void dumpstate
(
  enum State input
)

Parameter

anyvalue Filename input

Datei, in die die Zustandsinformationen ausgegeben werden (optionaler Parameter, verfügbar ab IDM-Version A.05.02.g).

Standardwert: Wenn der Parameter fehlt, werden die Zustandsinformationen in die Trace- bzw. Log-Datei ausgegeben.

Bis einschließlich IDM-Version A.05.02.f4 erfolgt die Ausgabe immer in die Trace- bzw. Log-Datei.

enum State := dump_error input

Dieser Parameter beeinflusst, welche Abschnitte der Zustandsinformationen herausgeschrieben werden.

Ab IDM-Version A.05.02.g ist dieser Parameter optional. Wenn der Parameter fehlt, gilt der Standardwert dump_error.

Wertebereich

dump_all

Alle Abschnitte werden gekürzt herausgeschrieben.

Entspricht der Ausgabe bei einem FATAL ERROR.

dump_error

Die Abschnitte ERRORS, CALLSTACK und EVENTS werden gekürzt herausgeschrieben.

Dies ist auch die normale Ausgabe im Falle eines EVAL ERRORS.

dump_events

Die Abschnitte THISEVENTS und EVENT QUEUE werden ungekürzt herausgeschrieben.

dump_full

Alle Abschnitte werden ungekürzt herausgeschrieben.

dump_locked

Der Abschnitt SLOTS wird ungekürzt herausgeschrieben. Zusätzlich werden für gesperrte (locked) Objekte deren Attributwerte herausgeschrieben.

dump_memory

Der Abschnitt MEMORY wird ungekürzt herausgeschrieben.

dump_none

Nichts passiert (kein Herausschreiben).

dump_process

Der Abschnitt PROCESS wird ungekürzt herausgeschrieben.

dump_short

Alle Abschnitte (außer SLOTS) werden gekürzt herausgeschrieben.

dump_slots

Der Abschnitt SLOTS wird ungekürzt herausgeschrieben.

dump_stack

Der Abschnitt CALLSTACK wird ungekürzt herausgeschrieben.

dump_usage

Der Abschnitt USAGE wird ungekürzt herausgeschrieben.

dump_uservisible

Der Abschnitt VISIBLE OBJECTS wird ungekürzt für alle sichtbaren Toplevel-Objekte inklusive deren Kindobjekte, vordefinierten und benutzerdefinierten Attribute herausgeschrieben.

dump_visible

Der Abschnitt VISIBLE OBJECTS wird ungekürzt herausgeschrieben.

Die Ausgabe von IDM Zustandsinformationen kann auch über die Schnittstellenfunktion DM_DumpState und die Startoptionen ‑IDMdumpstate <enum> und ‑IDMdumpstateseverity <string> erreicht werden.

Beispiel

dialog D

window Wi
{
  .title "dumpstate()-example";

  edittext Et
  {
    .content "66";
    .xauto 0;

    on deselect_enter
    {
      variable string Content := this.content;
 
      if fail(Pg.curvalue := atoi(Content)) then
        print "Konvertierungsfehler!";
        dumpstate(dump_error);
      endif
    }
  }

  pushbutton Pb
  {
    .ytop 33;
    .text "dump objects";

    on select
    {
      dumpstate(dump_visible);
    }
  }

  progressbar Pg
  {
    .yauto -1;
    .xauto 0;
  }

  on close
  {
    exit();
  }
}

Verfügbarkeit

IDM-Versionen A.05.01.g3, A.05.01.h, ab A.05.02.e

Siehe auch

Kapitel „Dumpstate (Zustandsinformationen)“ im Handbuch „Entwicklungsumgebung“