Seite 1 von 1

Mit dem Mauszeiger im Debuggermodus Methoden aufrufen [ERLEDIGT]

Verfasst: Fr, 25. Aug 2006 14:38
von Manfred
Hi Leute,

das ist ja mal eine heiße Sache, die ich gerade zum 1.Mal direkt reproduzieren konnte. Ich hatte gerade einen Quellcode im Debugger angesehen und bin dann mit dem Mauszeiger über den Quelltext gehuscht. Als ich dabei über eine selbstgeschriebene Methode fuhr, wurde die direkt aufgerufen. Ich habe nichts gemacht, nur die Maus drüberbewegt. Nicht schlecht, oder? Das klappte jedesmal. Das Programm läuft im Hybridtextmodus und die Methode baut ein Quickbrowse, oder Browse auf, sprich es wird ein Dialog überblendet. Ich werde gleich einmal versuchen zu testen, ob das nur in dieser Kombination klappt, oder ob jedesmal die "überfahrene" Methode aufgerufen wird.

Das kann doch nicht richtig sein, oder?

Vor allen Dingen nervt das, weil Dinge gemacht werden, die überhaupt nicht gewollt sind.

PS: Tatsächlich, es ist drissegal. Ich kann sogar eigene Methodanwerfen, die nichts mit GUI zu tun haben. Ich habe sogar die Methode angeworfen, die eine DB öffnen soll. Die hat sich natürlich beschwert.

Verfasst: Mo, 28. Aug 2006 9:12
von hschmidt
Hallo Manfred,

das ist eine Einstellungssache:
Unter 'Tools - Debugger Options' gibt es im 1. Tab General eine Checkbox 'Evaluate Expressions'. Wenn diese Einstellung gesetzt ist, werden Funktionen unter dem Mauszeiger direkt ausgeführt.
Das ist auch in der Hilfe so dokumentiert und es wird explizit davon abgeraten, weil es zu unvorhersehbaren Ergebnissen führen kann.

Schöne Grüße

Hans

Verfasst: Mi, 30. Aug 2006 9:49
von Manfred
Hi,

hier eine Antowrt vom Support, die ich aber nicht wirklich verstanden habe, ob es nun so gewollt ist, oder nicht.

Mal sehen ob ich sie richtig verstanden habe ;-)

Xbase++ ist eine dynamische Sprache. Sie haben wohl eben die
volle Tragweite dieser Tatsache erfahren.

Wenn sie zum Beispiel mit dem Expression Monitor einen Ausdruck
auswerten, dann wird dieser in der Runtime des Debuggees auch
ausgeführt. Wenn sie zum Beispiel eine Methode angeben, dann wird
diese Methode gesucht, gerufen und der Rückgabewert wird angezeigt.

Das Selbe gilt für die Tooltips. Wenn sie über den Quellcode den
Mauszeiger stehen lassen, dann wird der Ausdruck unter dem
Mauszeiger ausgewertet, so können sie im Tooltip zum Beispiel sehen
dass der Inhalt einer Variablen "i" die 5 ist.

Wenn sie eine IVar auslesen die Access/Assign implementiert ist,
dann läuft tatsächlich auch der Code im Debugge um den Wert der
IVar zu ermitteln.

Sie beschreiben, dass eine Methode ausgefürht wurde, ok das kann so
von uns nicht gewollt sein. Wir werden das mal prüfen.
Haben sie den Methodenaufruf markiert?

Übrigens kann man einige der hier beschriebenen Sachen im Tool
Menü für den Debugger ein- und ausschalten.

Ich hoffe diese Infos helfen weiter.

Mit freundlichen Grüssen,
Andreas Herdt
Alaska Technical Support

Verfasst: Mi, 30. Aug 2006 10:05
von Martin Altmann
Hallo Manfred,
yup - schau Dir mal die Antwort von Hans (ein wenig weiter oben) an...

Viele Grüße,
Martin

Verfasst: Mi, 30. Aug 2006 10:14
von Manfred
Hi Martin,

Sie beschreiben, dass eine Methode ausgefürht wurde, ok das kann so
von uns nicht gewollt sein. Wir werden das mal prüfen.
Haben sie den Methodenaufruf markiert?
dieser Satz verwirrt mich. Ist es jetzt gewollt, oder nicht?

Verfasst: Mi, 30. Aug 2006 10:46
von Martin Altmann
Nun,
teils-teils würde ich sagen!
Du hattest ja sicherlich den Methodenaufruf aktiviert, oder?
Und ob es dann gewollt war, kann ich natürlich nicht beantworten - das kann man so und so verstehen...
Am besten beantwortest Du Andreas erstmal seine Frage :)

Viele Grüße,
Martin

Verfasst: Mi, 30. Aug 2006 10:51
von Manfred
Hi Martin,

das ist doch schon alles erledigt. Ich wollte hier nur nicht direkt jede Antwort von Alaska reinhauen, bevor der Fall nicht abgeklärt ist... ;-)

Verfasst: Mi, 30. Aug 2006 10:53
von Martin Altmann
Ah - OK!
Und - hat sich Andreas daraufhin nochmals gemeldet?

Viele Grüße,
Martin

Verfasst: Mi, 30. Aug 2006 11:01
von Manfred
Nein, noch nicht. Die Mail ist vom 25.08.2006. War also ein WE dazwischen. Ist aber nicht schlimm, weil die Reaktion als solche verdammt schnell war.

Verfasst: Mi, 30. Aug 2006 13:24
von hschmidt
Manfred,

hattest Du denn den Methodenaufruf (evaluate expressions) aktiviert oder nicht?

Hans

Verfasst: Mi, 30. Aug 2006 16:10
von Manfred
Hi Hans,

stimmt, hatte ich aktiviert. Muß ich jetzt ganz ehrlich zugeben habe ich überlesen, nicht kapiert, falsch umgesetzt, was auch immer.

Ich habe mir überhaupt keine Gedanken darüber gemacht, dass es möglich ist und vor allen Dingen sehe ich jetzt überhaupt keinen Grund dafür sowas mit dem Mauszeigen ausführbar zu machen, während des Debuggen.

Kann mir jemand mal einen Tipp geben, wozu man sowas wirklich braucht? Ich meine jetzt auch Methoden ausführen, obwohl sie nicht an der Reihe sind? Sehe ich keine Sinn und Zweck drin. Wie ich schließlich festgestellt habe, ist das sogar nervend. Mauszeiger draufsetzen und ab geht die Post. OK; auf Kommando, mit Tastendruck, oder sonstwie, aber nur mit der Maus? Das gibt m.E. heftig Probleme.

PS: Ich habe es deaktiviert. Ergebnis: Jetzt sehe ich überhaupt nichts mehr, was mit Objekten passiert. Ich kann mir nur die kompletten Objekte ansehen. Wenn ich auf eine Membervar fahre mit der Maus, wird nichts angezeigt. Wenn ich den Parameter wieder aktiviere, dann werden auch Membervariablen einzeln angezeigt.

Ob das so gewollt war?

Verfasst: Mi, 30. Aug 2006 17:06
von hschmidt
Hallo Manfred,

das ist bei mir auch so.
Wenn man sich den Inhalt einer Instanzvariablen ansehen will, geht das m.E. am besten mit dem Expression Inspector (<Strg + F7>).
Dort kann man auch Funktionen aufrufen, Variablen manipulieren etc.

Hans

Verfasst: Mi, 30. Aug 2006 17:31
von Manfred
Hallo Hans,

jetzt kommt wieder ein berühmtes "Ja, aber"

Die VArs einfach so anzeigen, das ging doch auch mit dem alten Debugger xppdbg. Ich finde es schon fein, nur mit der Maus mir die Inhalte anzeigen zu lassen. Bei dem anderen halt, da habe ich so meine Bedenken....

Re: Mit dem Mauszeiger im Debuggermodus Methoden aufrufen

Verfasst: Mo, 30. Mär 2020 10:58
von dtmackenzie
Danke Manfred und Hans!
Genau das Problem habe ich zig mal gehabt, ohne dass ich wusste, warum meine Anwendung plötzlich weiter lief während ich beim Breakpoint war.
Heute bin ich endlich mal drauf gekommen, dass ich den Mauscursor unabsichtlich über eine Anzeigefunktion bewegt habe.
Meiner Meinung nach hätte dies wirklich nicht die Defaulteinstellung sein dürfen - ist unüblich, verwirrend und gefährlich.
Für Variablen ist es üblich, nett und völlig OK, die in Tooltips zu zeigen - aber Nebenwirkungen von so einer unbedachten Geste? Nein Danke!
Gut nun zu wissen, dass ich dieses unerwartete und unerwünschte Verhalten wenigstens ausschalten kann!
Danke nochmal und bleibt gesund,
David

Re: Mit dem Mauszeiger im Debuggermodus Methoden aufrufen

Verfasst: Mi, 08. Apr 2020 10:20
von dtmackenzie
Das Problem ist Alaska nun bekannt, mir wurde berichtet:
Gegenwärtig sollte die Voreinstellung für den genannten Schalter aber bereits auf "aus" sein, dh. standardmässig ist die Ausdrucks-Auswertung aus Sicherheitsgründen bereits ausgeschaltet.

Manfred, es ist Dein Thread, möchtest Du es vielleicht als erledigt markieren?

Re: Mit dem Mauszeiger im Debuggermodus Methoden aufrufen

Verfasst: Mi, 08. Apr 2020 10:50
von Manfred
Hi,
das Problem ist (oder war) wenn der Schalter auf AUS steht, werden auch keine Inhalte von Variablen mehr angezeigt (bei Mouseover) und das ist das Übel. Denn darin liegt die Würze der Workbench im Gegensatz zum Textdebugger.

Re: Mit dem Mauszeiger im Debuggermodus Methoden aufrufen

Verfasst: Mi, 08. Apr 2020 11:00
von dtmackenzie
Hi Manfred,
bei mir (Workbench 2.0 Professional Build: 1185) geht das nun richtig mit Schalter AUS - Inhalte von Variablen werden mit Mauseover gezeigt, aber keine Funktionen ausgeführt.

Re: Mit dem Mauszeiger im Debuggermodus Methoden aufrufen [ERLEDIGT]

Verfasst: Mi, 08. Apr 2020 11:13
von Manfred
Du hast recht. Das klappt jetzt tatsächlich, wie es aussieht. Habe ich noch gar nicht bemerkt. Das könnte alles jetzt für eine höhere Stabilität der WB sorgen, wenn man nicht mehr aus Versehen irgendeine Routine ausführt.