Seite 1 von 1
Debugger Fehler?
Verfasst: 06.12.2011 20:53
von gnasen
Ich habe hier ein sehr seltsames Verhalten beim Debugger beobachtet. Kann mir jemand erklären, warum das Programm am ProcedureReturn nicht sofort zurückspringt?
Es gibt keine Threads!
Noch ein sehr wichtiger Punkt:
Lasse ich mir die Variable *obj ausgeben, hat sie den richtigen Wert. Der Wert der Rückgabe ist allerdings 0 (als ob er das ProcedureReturn tatsächlich ignoriert)
edit: wer wagt es, meine Bilder bei nem anderen Dienst hochzuladen

vorher wurden die bei Klick vergrößert. Jetzt beim abload-dienst:

Re: Debugger Fehler?
Verfasst: 06.12.2011 21:11
von ts-soft
6 kleine Bilderlein, die konnte keiner sehen

Re: Debugger Fehler?
Verfasst: 06.12.2011 21:46
von Kiffi
@gnasen: wie wäre es mit
abload.de?
Grüße ... Kiffi
Re: Debugger Fehler?
Verfasst: 06.12.2011 23:45
von CSHW89
Vielleicht wäre da ein Codeschnippsel doch die bessere Wahl, um den (möglichen) Fehler zu reproduzieren. Hab mir mal eben ein kleinen Testcode zusammengeschrieben, den ich in etwa aus den wenigen Informationen der Bilder produziert hab. Resultat: kein Fehler.
lg Kevin
Re: Debugger Fehler?
Verfasst: 07.12.2011 00:10
von gnasen
Das projekt ist äußerst mächtig und einen Fehler dieser Art habe ich noch nie gesehen.
Einen Codeschnipsel zu erstellen ist mir bisher nicht gelungen, wollte das ganze aber zumindest schnell dokumentieren, falls der Fehler so plötzlich verschwindet, wie er aufgetreten ist.
Re: Debugger Fehler?
Verfasst: 07.12.2011 01:56
von Ramihyn_
Leider kenne ich diesen Fehler ebenfalls aus einem grösseren Projekt. Ich habe es aber nie geschafft ihn in einem kleinen Beispiel zu reproduzieren um ihn reporten zu können.
Bei meinen Versuchen herauszubekommen was genau eigentlich dort auftritt - denn es könnte ja ein reines Problem der Anzeige des Debuggers sein (singlestepping über bestimmte Ketten komplexer Ausdrücke) - ist der Fehler einfach plötzlich verschwunden. Sofern sich dieser Fehler also hier nicht erklären lässt, würde ich Dir vorschlagen das gleiche zu tun. Zerlege die IF Zeile in eine Kette einfacherer kleinerer Konstrukte und schau ob Du dadurch entweder der problematischen Stelle näher kommst, oder der Fehler ebenfalls plötzlich einfach verschwindet.
Vielleicht befindet sich ja auch ein syntaktischer Fehler in der IF Zeile weiter rechts, den wir nicht sehen können und der Compiler fälschlicherweise übersetzt hat. Sowas findet sich dabei dann auch
Übrigens arbeite ich deshalb immer mit expliziten Klammern um die Anzahl möglicher Problemquellen zu reduzieren.
also z.B.
Code: Alles auswählen
If ((*obj\type = #obj_shape) or (*obj\type = #obj_border))
Re: Debugger Fehler?
Verfasst: 07.12.2011 18:25
von gnasen
Ich habe jetzt die Zeile, inklusive dem nicht sichtbaren Teil (identische Abfragen nur mit anderen Konstanten), in elseif Blöcke zerlegt. Selber Fehler, nur jetzt in einem der entsprechenden "ElseIf-Blöcke".
Habe die Prozedur jetzt durch etwas funktionsgleiches ersetzt und das ganze funktioniert, wie zu erwarten, ganz wunderbar. Seltsamer Fehler...
Re: Debugger Fehler?
Verfasst: 07.12.2011 19:58
von Ramihyn_
gnasen hat geschrieben:Ich habe jetzt die Zeile, inklusive dem nicht sichtbaren Teil (identische Abfragen nur mit anderen Konstanten), in elseif Blöcke zerlegt. Selber Fehler, nur jetzt in einem der entsprechenden "ElseIf-Blöcke".
Habe die Prozedur jetzt durch etwas funktionsgleiches ersetzt und das ganze funktioniert, wie zu erwarten, ganz wunderbar. Seltsamer Fehler...
Ja
Ich tippe auf einen Fehler des Compilers der durch diesen spezifischen Zustand des Projektes getriggert wird. Bei mir war es so, dass ich den Fehler später nicht mehr reproduzieren konnte nachdem das Projekt an einigen anderen Stellen geändert wurde. Falls der Fehler sich jetzt gerade bei Dir noch reproduzieren lässt, wäre es mal interessant den generierten Assembler Code für die Funktion zu sehen (pbcompiler /commented). Dann würde man das mit dem erzeugten Assembler code der gleichen Abfrage in einem funktionierenden Programm vergleichen können und evtl. einen Hinweis auf den Ursprung des Problemes bekommen (wäre dann aber etwas was Fred/Freak sich anschauen müssten).
Mir den generierten Assembler code anzusehen, hab ich damals leider verpennt weil ich die /commented Flagge noch nicht kannte.