Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Warum mag mir der Debugger so selten beim Auswerten helfen? (https://www.delphipraxis.net/176475-warum-mag-mir-der-debugger-so-selten-beim-auswerten-helfen.html)

Der schöne Günther 7. Sep 2013 21:35

Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
XE4. Folgendes:

Einfache PODs wie Integer oder sonstwas auf dem Stack auswerten, da kann der Delphi-Debugger nur müde lächeln. 8-) Allerdings bekomme ich etwas aufwändigeren Klassen oft nur noch ein
Delphi-Quellcode:
()
zurück. Im Beispiel-Bild ist es der
Delphi-Quellcode:
Sender
-Parameter eines VCL-Eventhandlers, allerdings habe ich oft das mit allem möglichem. Eine Logik dahinter habe ich bislang nicht feststellen können. Wer kann mir weiterhelfen?

Auch hängt sich der kleine Fragezeichen-Button zum Abfragen einer Property gerne auf: Er rastet ein, danach passiert nichts mehr. Ein Ergebnis bekomme ich nie.

jaenicke 7. Sep 2013 22:25

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Sender ist erst einmal nur ein TObject, da ist normalerweise nichts interessantes drin, bzw. genauer gesagt keine published Eigenschaften. Wenn du z.B. TButton(Sender) schreibst, siehst du auch etwas.

Wenn du beim Auswerten z.B. Sender.ClassName eingibst, wird das auch ausgewertet.

Uwe Raabe 7. Sep 2013 22:26

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
TObject hat auch keine Feldwerte.

Der schöne Günther 8. Sep 2013 08:38

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Ich stehe auf dem Schlauch.
Klar ist die Referenz nur vom Typ TObject, allerdings hat doch schon jedes TObject so tolle Dinge wie
Delphi-Quellcode:
class function ClassInfo: Pointer
oder
Delphi-Quellcode:
function ClassType: TClass
: Zur Laufzeit kann ich doch dann problemlos schauen, von welchem Typ das Objekt tatsächlich ist.

Es ist ja nicht nur im Falle von
Delphi-Quellcode:
TObject
, es war grade das erste Beispiel, das ich zusammenzimmern konnte. Ich hoffe nur, irgendeine Compiler/Debuggereinstellung verdreht zu haben?

jaenicke 8. Sep 2013 11:53

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Das wird aber nicht benutzt. Der Debugger wertet das Objekt mit dem Typ aus, als das es gerade gespeichert ist. Das macht in aller Regel auch Sinn, denn sonst sieht man vielleicht Sachen, die gar nicht interessant sind.

Wenn du z.B. ein Auto übergeben bekommst, das allgemein nur fahren kann und Türen hat, dann interessiert es dich weniger, dass es konkret vom Typ Mercedes ist und auch noch Chromleisten und Alufelgen hat... denn als Basistyp Auto kannst du mit denen ja ohnehin nichts anfangen.

Der schöne Günther 8. Sep 2013 13:49

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Da widerspreche ich ja nicht, das macht ja wirklich Sinn. Es ist nur diese eine Sache: Ich möchte im Debugger nun einmal wissen, was es genau für ein Auto ist. Er müsste das können, denn mitten in meinem Anwendungscode kann ich das ja auch.

Weiterhin sind Dinge wie ClassType blöderweise Getter-Funktionen und keine Properties. Entweder bin ich zu dumm, oder der Debugger will nur beim Auswerten nur Properties anfassen, reine Methoden mag er nicht.

jaenicke 8. Sep 2013 15:14

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1227592)
Ich möchte im Debugger nun einmal wissen, was es genau für ein Auto ist. Er müsste das können, denn mitten in meinem Anwendungscode kann ich das ja auch.

Du kannst es ja auch jederzeit abfragen und nach einem Cast siehst du ja auch alles dieser Klasse, wie schon geschrieben. Den Automatismus gibt es so nicht, den könnte man höchstens in einem Addon einbauen.

Zitat:

Zitat von Der schöne Günther (Beitrag 1227592)
Weiterhin sind Dinge wie ClassType blöderweise Getter-Funktionen und keine Properties. Entweder bin ich zu dumm, oder der Debugger will nur beim Auswerten nur Properties anfassen, reine Methoden mag er nicht.

Beim Überwachen kannst du in den Eigenschaften der Überwachung das Häkchen setzen um Nebeneffekte und Funktionsaufrufe zuzulassen.
Wenn etwas anderes nicht geht, liegt das in der Regel an der Optimierung, so dass der Bezeichner an der Stelle gerade nicht verfügbar ist.

Der schöne Günther 8. Sep 2013 15:36

AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
 
Jetzt kriege ich es langsam auf die Reihe :thumb:

Trotzdem finde ich es unverständlich, dass
Delphi-Quellcode:
TObject
nur eine Getter-Funktion hat, eine Property die der Debugger direkt ohne Gutes Zureden auswerten kann hätte sicher niemandem weh getan.

Eine Helper-Klasse mit entsprechender Property für TObject hat leider auch nichts bewirkt, aber es gibt sicher Schlimmeres.

Danke für die Hilfe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz