Nächste Seite: Was kann unser Debugger? Aufwärts: Werkzeuge zu M2Amiga Vorherige Seite: M2Amiga-Prozeduren in fremden Sprachen

# Der Debugger (`m2debug`)

Wenn man ein Modula-2 Programm schreibt, kann man im wesentlichen zwei Arten von Fehlern machen: Syntaktische Fehler und semantische Fehler. Die syntaktischen Fehler werden alle durch den Compiler gefunden; also wenn man ein Komma oder Strichpunkt an der falschen Stelle geschrieben hat, wenn man ein reserviertes Wort falsch geschrieben hat oder wenn man sich sonst nicht an die Modula-2 Syntax gehalten hat.

Bei den semantischen Fehlern können wir wiederum zwei weitere Arten unterscheiden: Die semantischen Fehler, die der Compiler bereits beim Übersetzen entdecken kann; dies wären beispielsweise nicht deklarierte Variablen oder Typenunverträglichkeiten. Und die zweite Art sind die semantischen Fehler, die der Compiler nicht herausfinden kann, weil sie dynamische Vorgänge betreffen; als Beispiel könnte man hier Überschreiten der Feld-Grenzen, Zugriff auf Zeigervariablen mit dem Wert `NIL` oder Zuweisung eines negativen Wertes an eine `CARDINAL`-Variable anführen.

Genau diese zweite Art der semantischen Fehler ist aber die gemeine, welche die Logik des Programms ausmacht. Diese Fehler entscheiden meist darüber, ob ein Programm läuft oder nicht. Unser Compiler `m2c` erzeugt nun zusätzliche Instruktionen im Programm, um diese ,,Fehler der zweiten Art`` abzudecken.

So weit so gut. Nun taucht so ein gemeiner Fehler auf, und das Programm bricht mit einer Fehlermeldung ab. Das ist zwar schon ein Fortschritt gegenüber dem allseits beliebten ,,Guru``, aber immer noch weit entfernt von Benutzerfreundlichkeit. Die Fragen, die Sie sich jetzt klarerweise stellen, sind:

- Wo ist mein Programm abgestürzt?
- Wie sieht die Variablen-Belegung im Zeitpunkt des Abbruchs aus?
- Was passierte vorher?

Unterabschnitte

- - Was kann unser Debugger?
- Aufruf und Bedienung
- Die Fenster
  - Quelltext
  - Aufrufkette
  - Modultabelle
  - Daten 1 und 2
- Die Menus
  - .def, .mod
  - Moduln
  - Prozeduren
  - Layout
  - Screen
  - Quelltext
  - Ende
- Darstellung der Daten
  - Unstrukturierte Typen
  - Strukturierte Typen
- Typen ändern
  - Beispiele
- Ein vollständiges Beispiel

Nächste Seite: Was kann unser Debugger? Aufwärts: Werkzeuge zu M2Amiga Vorherige Seite: M2Amiga-Prozeduren in fremden Sprachen