Seite 1 von 1

Probleme mit Breakpoints

Verfasst: Mi, 28. Nov 2007 15:22
von J.Renseler
Hallo,

ich habe mal wieder ein kleines Problem mit VX, hoffentlich nur eine Einstellungssache.

Bei mir funktionieren keine VX Breakpoints, d.h. der Debugger unterbricht mein Programm nicht bei den Breakpoints die ich mit F5 setzen kann. Die Breakpoints werden als invalid markiert. Setze ich hingegen über altd() fest einen Breakpoint im Programm funktioniert es problemlos.
So kann ich aber leider nicht die erweiterten Funktionen der Breakpoints benutzen.

Hat jemand schon mal sowas beobachtet?

Gruß,
Jannik

Verfasst: Mi, 28. Nov 2007 15:52
von Jan
Normalerweise funktionieren Breakpoints immer. Aber nicht auf jeder Zeile (z. B. auf Variablendeklarationen nicht). Und Du musst das Programm nicht mit ShiftF9 sondern mit F9 starten.

Jan

Verfasst: Mi, 28. Nov 2007 15:54
von brandelh
Hallo,

eventuell musst du eine Zeile rauf oder runter, Leerzeilen z.B. können nicht als Breakpoint dienen. ENDIF oder DO CASE meine ich sind auch nicht möglich, sondern genau die CASE .... Zeile.

Verfasst: Mi, 28. Nov 2007 15:55
von Martin Altmann
Wenn ich mich recht erinnere, gab es (zumindest vor VX) auch Probleme, wenn die prg-Datei ein jüngeres Datum hat, als die obj-Datei...

Viele Grüße,
Martin

Verfasst: Mi, 28. Nov 2007 16:03
von brandelh
Martin Altmann hat geschrieben:Wenn ich mich recht erinnere, gab es (zumindest vor VX) auch Probleme, wenn die prg-Datei ein jüngeres Datum hat, als die obj-Datei...
wenn die sich unterscheiden ist es natürlich besonders übel :D

Das ist dann wie in Berlin ne Straße suchen mit dem Stadtplan von Köln - der Stadtteil heißt ja so ähnlich :wink:

Verfasst: Mi, 28. Nov 2007 16:50
von Manfred
Hi Jannik,

kenne ich das Problem. Wie schon oben erwähnt: am besten VX beenden, neu kompilieren und dann sollte es gehen. Allerdings auch hier wieder ein kleiner Hinweis, VX ist immer noch Beta und hat ein paar kleine Fehler...

Verfasst: Do, 29. Nov 2007 9:40
von J.Renseler
Hallo,

danke für euere Tipps ...
brandelh hat geschrieben:Hallo,

eventuell musst du eine Zeile rauf oder runter, Leerzeilen z.B. können nicht als Breakpoint dienen. ENDIF oder DO CASE meine ich sind auch nicht möglich, sondern genau die CASE .... Zeile.
es lag wohl wirklich dadran das ich versucht habe Breakpoints auf Leerzeilen zu setzen.

Natürlich ist VX noch Beta, aber man kann ja doch schon ne Menge damit machen. :)

Gruß,
Jannik

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 8:49
von Roger
Hallo

Ich habe alle paar Monate wieder das Problem, dass der Debugger mit einem falschen Quellcode arbeitet, d.h. er springt zu nicht existierenden Zeilen (wie von Jannik beschrieben).

Das Problem verschwand jeweils 'irgendwie' wieder - aber im Moment ist es gerade sehr hartnäckig. Es tritt diesmal nur bei einem .PRG (von etwa 40 in diesem Projekt) auf, das Tracen in den anderen .PRGs funktioniert einwandfrei.

Es geht nicht um Breakpoints auf Leerzeilen. Ich habe schon Folgendes versucht:
1) .OBJ gelöscht, .PRG neu kompiliert ...
2) .PRG komplett aus Projekt entfernt, .EXE ohne dieses Programm erzeugt, anschliessend neu ins Projekt aufgenommen, neu kompiliert ...
3) Angaben über Breakpoints manuell aus .XPJ entfernt ...
... alles ohne Erfolg :-(

Wer kann mir weiterhelfen? Danke!

Grüsse,
Roger

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 8:58
von Martin Altmann
Moin Roger,
wahrscheinlich:
  • Ist die betreffende prg ohne DEBUG-Schalter kompiliert
  • Sind am Anfang des prg irgendwelche DLLFUNCTION o.ä. Konstrukte drin - die dann ans Ende verschieben.
Viele Grüße,
Martin

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 9:01
von Manfred
Hi Roger,

das Problem kenne ich auch. Bei mir war es aber immer eine Inkonsistenz zwischen PRG und OBJ Datei. Ein paar Probleme haben sich einfach "wie von selbst" gelöst, sprich ich habe keine Ahnung, warum sie nachher weg waren.
Ansonsten war irgendwo ein Pfad auf eine Obj Datei gesetzt den ich übersehen hatte. Die entsprechende ObJ Datei entfernt und es klappte wieder. Das war übrigens die Hauptursache. Ich hätte schwören können, dass alle OBJ Dateien weg, oder neu kompiliert waren. Irgendwo hatte sich dann ein Wurm eingeschlichen

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 9:03
von brandelh
Hi,

das Problem habe ich aktuell auch !
Sowohl im Debugger als auch in der XppError.LOG sind die Fehlerzeilenangaben um 2 Zeilen verschoben [-X

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 9:25
von Roger
Martin Altmann hat geschrieben:Moin Roger,
wahrscheinlich:
  • Ist die betreffende prg ohne DEBUG-Schalter kompiliert
  • Sind am Anfang des prg irgendwelche DLLFUNCTION o.ä. Konstrukte drin - die dann ans Ende verschieben.
Viele Grüße,
Martin

Hallo zusammen

Problem gelöst! Ich mache grundsätzlich alle #define und #include-Zeilen zu Beginn der .PRGs. Jetzt habe ich die folgende "include"-Zeile wieder ans Ende des Codes verschoben (wo der Formdesigner die jeweils hinschreibt) - und alles funktioniert wie gewünscht :-)

Code: Alles auswählen

* Programmcode fuer die Implementierungsebene der Klasse einfuegen
#include "_KONDDETAIL.PRG"
Erstaunlich - wunderbar - vielen Dank!
Gruss Roger

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 10:28
von brandelh

Code: Alles auswählen

* Programmcode fuer die Implementierungsebene der Klasse einfuegen
#include "_KONDDETAIL.PRG"
Diese include lösche ich immer in der PRG und trage diese PRG in der projekt.xpj unter PRG .
Normalerweise müssen die #include "*.CH" VOR dem Quellcode kommen, da diese ja normalerweise #define XXXX Wert enthalten ...

Bei mir könnte es eventuell mit einem der neuen HOTFIX zu tun haben ... aber aktuell muss ich mich wohl daran gewöhnen 2 Zeilen über der Angabe zu lesen :banghead:

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 10:38
von Tom
Wenn man eine Direktivendatei inkludiert (.CH), werden die Direktiven vom Compiler abgearbeitet, also die definierten Konstanten im Quellcode ersetzt und bei anderen Direktiven (#command usw.) entsprechende Änderungen am Code vorgenommen. Bei #defines entsteht nichts Zusätzliches im Code. Wenn man jedoch eine Quellcodedatei (.PRG) inkludiert, wird der Quellcode an dieser Stelle ergänzt.

INLCLUDE1.PRG:

Code: Alles auswählen

#include 'include2.prg'
FUNCTION Main()
  ? 'Hallo, Welt'
  ? Halloele()
RETURN NIL
INCLUDE2.PRG:

Code: Alles auswählen

FUNCTION Halloele()
? 'Aber sowas von hallo.'
RETURN NIL
Wenn man 'INCLUDE1.PRG' compiliert, wird der Code aus 'INCLUDE2.PRG' 'INCLUDE1.PRG' oben hinzugefügt. Das kann man im Präprozessor-Output sehr schön sehen. Und deshalb "verrutschen" natürlich auch alle Zeilen, wenn das Laufzeitfehlersystem eingreifen muss.

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 10:51
von Manfred
Sowas ähnliches hatten wir schon mal.

http://www.xbaseforum.de/viewtopic.php?f=30&t=879

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 11:42
von brandelh
Dass man Ärger mit #include "*.PRG" haben kann ist klar, das mache ich auch nicht ;-)

Was ich mache ist die Verwendung von dem Befehl SUPER ohne irgendwas ...
in dem Quellcode hatte ich
2 Zeilen Versatz und
2 SUPER ...
wenn ich nun
SUPER:.... schreibe (also statt SELF:....) stimmen die Zeilen wieder !

Somit liegt ein Fehlverhalten von Xbase++ Version 1.90.355 vor - schade das hatte ich gerne benutzt :(

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 11:50
von Manfred
Hi Hubert,

Alaska schon informiert?

Re: Probleme mit Breakpoints

Verfasst: Fr, 13. Aug 2010 13:03
von brandelh
Manfred hat geschrieben:Hi Hubert,
Alaska schon informiert?
ich habe die PDR Meldung vorhin abgesandt.