Seite 1 von 1

Debuggen eines eventgesteuerten Systems

Verfasst: So, 30. Dez 2007 20:51
von Manfred
Hi,

ich kriege gerade mal wieder einen Affen. Habe ich wieder irgendwas übersehen, oder ist es nahezu unmöglich ein eventgesteuertes Programm zu debuggen? Jedesmal, wenn ich bei einem STOP den Bildschirm in den Einzelschrittmodus zum Debugger wechsel, geschieht doch ein Ereignis und sei es nur, dass es einen KillInputFocus gibt für ein SLE oder so.
Wie will man denn da vernünftig testen....

Ich bin gerade dabei SLEPic durchzutesten um überhaupt mal zu verstehen, was denn da so alles passiert.

Verfasst: So, 30. Dez 2007 21:04
von AUGE_OHR
hi,

um Event zu "debuggen" gibt es den EventSpy.DLL. Die muss man in
seine Application einbinden und bekommt dann im seperatem Fenster
die Events (einstellbar) angezeigt.

gruss by OHR
Jimmy

Verfasst: So, 30. Dez 2007 21:06
von Manfred
Hi,

verstehe ich jetzt nicht. Ich meine nur, dass egal was ich mache, ich jedesmal im Programm einen Event auslöse und somit gar nicht richtig sehen kann was passiert, oder meinst Du das etwa?

Verfasst: So, 30. Dez 2007 21:35
von Martin Altmann
Hallo Manfred,
das ist genau der Grund, warum ich in solchen Situationen immer die Inhalte der Variablen und sonstige Angaben, die mich interessieren, in eine Textdatei schreibe und diese dann auswerte.
Anders wird es wohl (zumindest im DOS-Debugger, den VX nutze ich noch nicht) nicht gehen!

Viele Grüße,
Martin

Verfasst: So, 30. Dez 2007 23:01
von Manfred
Hi Martin,

ich möchte sehen, was im allgemeinen passiert. Es ist ja alles nachprogrammiert in SLEPic. Allerdings sind da ein paar Dinge, die wohl nicht so richtig klappen und das möchte ich gerne ausprobieren, welchen Weg die Dinge da gehen.

Verfasst: So, 30. Dez 2007 23:07
von Martin Altmann
Hallo Manfred,
na eben - darum musst Du an den entsprechenden Stellen halt einfach was in eine Textdatei schreiben und dann kannst Du danach auswerten, was in welcher Reihenfolge ausgeführt wurde.

Viele Grüße,
Martin

Verfasst: So, 30. Dez 2007 23:11
von Manfred
Hm,

evtl. drücke ich mich wieder falsch aus.

Also, mich würde interessieren, warum SLEPIc z.B. bei Picture Angaben die ENFT Taste nicht richtig verarbeitet. Weiterhin würde mich interesseiern, was generell passiert, wenn die Picture Maske angegeben wird. Leider geht das nicht, weil ich bei jedem Tastendruck in die Keyboard Methode gelange, dann aber von dort aus gleich in das nächste SLE. Egal was ich mache, ich kann nicht den Einzelschrittmodus machen. Das Teil hüpft hin und her, weil es halt alles EVENTS sind, die da durchknallen.

Naja, ich werde mir das Morgen nochmal in Ruhe und ausgeschlafen ansehen.

Verfasst: So, 30. Dez 2007 23:13
von Martin Altmann
NA EBEN!
Darum musst Du in der :keyhandler-Methode einzelne Ausgaben in Deine Debug-Textdatei einbauen, damit Du im Nachhinein weißt, wo was gefeuert hat.

Viele Grüße,
Maritn

Verfasst: Mo, 31. Dez 2007 8:37
von Manfred
aha,

na da muß ich wohl noch ein wenig umdenken.

Danke.

Verfasst: Do, 03. Apr 2008 18:37
von Manfred
ich habe keine Ahnung, wie man die eventspy.dll einbindet, bzw. wie man dann das Fenster erhält, wie im Beispiel....

Mit anderen Worten: Nix neues.

Verfasst: Do, 03. Apr 2008 22:52
von AUGE_OHR
hi,
Manfred hat geschrieben: ich habe keine Ahnung, wie man die eventspy.dll einbindet,
bzw. wie man dann das Fenster erhält, wie im Beispiel....
zunächst einmal Eventspy "auspacken"
und mit "MakeDLL.BAT" die DLL
und LIB erstellen und in das aktuelle Alaska Verzeichniss kopieren.
Wenn er die LIB nicht erstellen will und er wegen fehlender *.DEF
"meckert" dann die *.BAT erweitern :

Code: Alles auswählen

Xpp ... /dll ...
Xpp ... /dll ...
[color=red]XPPFILT eventspy.OBJ /F:eventspy.DEF[/color]
aimplib eventspy.def
hm ... irgendwie funktioniert die daraus gewonnene LIB/DLL nicht so wie
gewünscht. Also doch besser die "original" LIB/DLL aus dem ZIP File
verwenden.

füge an den Anfang deiner Xbase++ Application

Code: Alles auswählen

#PRAGMA LIBRARY( "EVENTSPY.LIB" )
ein.

Vor deiner Eventloop kommt nun

Code: Alles auswählen

  
EventSpy():logSelected := {|a| MyFunc( a ) }
und die Function MyFunc könnte so aussehen :

Code: Alles auswählen

FUNCTION MyFunc( aEvent )
LOCAL cString

   cString := EventSpy():format( aEvent[1], aEvent[2], aEvent[3], aEvent[4] )

   IF aEvent[1] <> NIL
         MsgBox( "The numeric event constant is:" + Chr(13) +Chr(13) + ;
                  LTrim( Str(aEvent[1]) ), "Hooked into the Event Spy" )
   ENDIF

   QOut( cString )

RETURN cString
In der Eventloop musst du nun

Code: Alles auswählen

      #pragma Info( NOINIT )
      nEvent := AppEvent( @mp1, @mp2, @oXbp )
      #pragma Info( INIT )
nutzen.

Verfasst: Fr, 04. Apr 2008 8:57
von Manfred
Hi Jimmy,

Danke für die ausführliche Hilfe. Das Fenster erscheint jetzt auch, aber es wird nichts angezeigt. Ich denke mal, irgendwas habe ich wieder übersehen....

Verfasst: Fr, 04. Apr 2008 16:36
von AUGE_OHR
Hi,
Manfred hat geschrieben: Danke für die ausführliche Hilfe. Das Fenster erscheint jetzt auch, aber es wird nichts angezeigt. Ich denke mal, irgendwas habe ich wieder übersehen....
hast du die LIB/DLL aus dem Zip File genommen weil das Ergebniss mit
MakeDlll.BAT nicht funktioniert ?
kommst du an die "Option" ran ?

Verfasst: Fr, 04. Apr 2008 16:43
von Manfred
Ja,

habe ich genommen und an die Optionen komme ich auch ran. ich habe auch ein wenig damit gespielt, aber kein Muckser zu entlocken. :(

Verfasst: Do, 24. Apr 2008 16:15
von Manfred
Jetzt geht es.

ich habe aber die eventspy.lib ins Projektfile eingebunden und als Pragma aus der PRG rausgenommen

Verfasst: Do, 24. Apr 2008 18:30
von AUGE_OHR
hi,
Manfred hat geschrieben: Jetzt geht es.

ich habe aber die eventspy.lib ins Projektfile eingebunden und als Pragma aus der PRG rausgenommen
ja so geht es auch. und schon "Ergebnisse" ?

Verfasst: Do, 24. Apr 2008 18:37
von Manfred
Ja,

Ergebnisse habe ich. Aber ich kann nichts damit anfangen. Der Bildschirm wird vollgeschrieben, dass ich gar nicht so schnell gucken kann. Mit den Daten kann ich nichts anfangen. Ich habe aber im Moment ein ganz anderes Problem, das mir die Schweißperlen, so groß wie Golfbälle, auf die Stirn treibt. Deshalb muß ich den Spion erst mal hinten dran hängen.

Verfasst: Do, 24. Apr 2008 23:58
von brandelh
Manfred hat geschrieben:Ja,

Ergebnisse habe ich. Aber ich kann nichts damit anfangen. Der Bildschirm wird vollgeschrieben, dass ich gar nicht so schnell gucken kann. Mit den Daten kann ich nichts anfangen.
Hi,

darum bevorzuge ich den uralten SET ALTERNATE TO LOG.TXT ;-)

Verfasst: Fr, 25. Apr 2008 0:33
von AUGE_OHR
hi,

beim Eventspy gibt es den Button "Option". Wenn man da ran kommt kann
man bestimmen "welche" Events angezeigt werden bzw. in das Logfile
geschrieben wird.

Ich bin mir jetzt nicht sicher, aber es könnte sein das die v1.9x Version
irgendwie ging (komische Effekte wie bei dir) und ich dann einfack mal
"andere" Version ausprobiert hatte ... Ich werde mal Datum/Uhrzeit
vergleichen müssen ...

Verfasst: Fr, 25. Apr 2008 7:28
von Manfred
Hi,

ich habe überall einen Haken rein gemacht. Aber ein Logfile konnte ich nirgends finden.

Verfasst: So, 18. Mai 2008 5:13
von AUGE_OHR
hi,

mir fällt gerade ein das es noch eine "spezial" Version gibt unter
http://www.knowlexbase.com/en/software/ ... index.html