Frage zum Debugger

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

PSY

Betreff: Frage zum Debugger

BeitragMo, Jul 10, 2006 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi...

ich hab ne grundsätzliche Frage zum Debugger.

Also erstmal folgendes Szenario:

Ich hab nen Dimfeld level(75,51)
Nun steht die Spielfigur auf px=1 und py=1
Es kommt ne Tastaturabfrage, die checkt ob man die linke Cursortaste drückt und wenn ja, prüft sie das Feld level(px-2,y).

Somit wird das Feld level(-1,1) geprüft, was zur Fehlermeldung "Array index out of bounds" führt.

Wenn ich aber den Debugger ausschalte, funktioniert es. Wodran liegt das?

Grüsse,
PSY

BtbN

BeitragMo, Jul 10, 2006 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil Windows sich nicht beschwert, dass du in fremdem Speicher rumwühlst.
Grundsätzliche Regel wäre, nur wenn ein Programm mit und ohne Debugger fehlerfrei funktioniert, ist es wirklich fehlerfrei.
Denn in fremdem Speicher rumzuwühlen kann böse Folgen haben.
Also lass es am besten, außerhalb eines Arrays rumzufischen.
 

Nox

BeitragDi, Jul 11, 2006 2:15
Antworten mit Zitat
Benutzer-Profile anzeigen
BORNtobeNAMELESS hat Folgendes geschrieben:
Weil Windows sich nicht beschwert, dass du in fremdem Speicher rumwühlst.


Hätte er wirklich in "fremdem" Speicher rumgepfuscht, hätte sich Windows sehr wohl beschwert, nämlich mit einer Memory Access Violation.
Jedes Programm bekommt zu Beginn einen eigenen Stack im Speicher zugewiesen, den es frei nutzen darf (bei Bedarf vergrößert und verkleinert sich das). Wenn er von seinem Array mal ein paar Bytes tiefer geht, wird er sich sehr sehr sehr höchstwahrscheinlich noch im eigenen Stack befinden, was erstmal keinen Fehler darstellt. Dass da allerdings Daten liegen, die man nicht beabsichtigt hat, dürfte klar sein. Smile
Als Probe könnte man einfach mal einen Array mit immer tieferen Indizes ausgeben lassen und beobachten, wann das Programm letztendlich abschmiert. Dann kann man sich sicher sein, dass der Programm-eigene Stack soeben verlassen wurde. Wink

PSY

BeitragDi, Jul 11, 2006 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
sowas dacht ich mir schon. natürlich werd ich das problem beheben. war halt nur mal interessant zu wissen, dass man überhaupt ausserhalb von festgelegten bereichen adressieren kann.

l8er,
psy
 

Nox

BeitragDi, Jul 11, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Adressieren kannst du das ganze RAM. Nur ob dein Betriebssystem ohne Weiteres einen Zugriff zulässt, ist eine andere Sache. Smile

PowerProgrammer

BeitragDi, Jul 11, 2006 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schade, das es in BB keine Pointer gibt Wink
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Nox

BeitragDi, Jul 11, 2006 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
PSY hat ja eine Möglichkeit gefunden, eine Art Pointer zu nutzen. Einfach utopische Indizes bei Arrays benutzen und schon sind dir keine Grenzen gesetzt. Wink

PowerProgrammer

BeitragDi, Jul 11, 2006 13:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind aber nur relative Pointer Crying or Very sad
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Nox

BeitragDi, Jul 11, 2006 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Schon, wenn man aber rausfindet, wo das Array im Programmstack liegt, kann man zusätzlich noch über die WinAPI abfragen, welchen Speicherbereich das ganze Programm zugesichert bekommen hat (Startadresse und Länge). Dann kann man super vom Array aus überall "hinzeigen" - ist zwar immer noch relativ, aber auch semi-absolut, weil ich ja dann gezielt wandern kann. Very Happy

PowerProgrammer

BeitragDi, Jul 11, 2006 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann würde ich doch besser ne DLL benutzen, statt es so umständlich zu machen;-)

Naja, ist schon wieder n bisschen off-topic...
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Nox

BeitragDi, Jul 11, 2006 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit ner DLL wär's aber nicht rein mit BB gelöst und nicht so 1337. Laughing
Okay, lassen wir das mal. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group