Entwickler-Ecke

Programmierwerkzeuge - Erweiterte Überprüfung auf Fehler


[r2d2] - Do 09.12.04 23:00
Titel: Erweiterte Überprüfung auf Fehler
Hallo Alle zusammen
Ich programmiere gerade ein ziemlich komplexes Spiel. Jetzt ist mir aufgefallen, dass sich der Wert einer ganz bestimmten Variablen immer dann ändert, wenn ich eine neue Variable erstelle. Ich kann mir das nur so erklären, dass ich irgendwo im Programm-Code die Länge eines Arrays überschreite. Diese Stelle kann ich aber unmöglich manuell finden. Gibt es eine Möglichkeit, sich Überschreitungen von arrays anzeigen zu lassen?
Wenn so eine Überschreitung direkt im Quellcode steht, dann wird das ja angezeigt. Beispiel:
bla sei ein integer-array der länge 2
bla[3] := 1; Folgende Übertretung wird aber nicht erkannt: for i:=3 to 3 do bla[i] := 1;

An dieser Stelle möchte ich auch gleich noch eine Frage los werden: Kann ich dem Debugger sagen, dass er bei access violations bitte sagen soll, welche Zeile im Quellcode sie verursacht hat?

Danke im Vorraus
Klaus


BenBE - Do 09.12.04 23:14

Während das Programm läuft, gehst du in der Delphi-IDE unter Suchen\Laufzeitfehler ... rein. Dort gibst du die Code-Adresse der AV (die erste derr beiden in der Meldung) an und drückst ENTER. Danach springt er entweder ins CPU-Fenster oder im Quelltext an die richtige Stelle.

In wie weit das unter den Pers-Eds verfügbar ist, kann ich nicht sagen, mein D4S hatte das aber glaube auch schon.


Motzi - Do 09.12.04 23:31

Es geht auch einfacher... einfach in den Projekt-Optionen bei Compiler -> Runtime Errors -> Range checking aktivieren. Solltest du jetzt mal die Arraygrenzen überschreiten wird eine Exception ausgelöst..!


[r2d2] - Do 16.12.04 17:10

Danke, hat beides super geklappt, hatte wirklich über ein array hinaus geschrieben.
Die Sache mit den Access Violations ist zwar ein bisschen umständlich, aber immer noch besser als garnichts.