![]() |
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:
-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?
Sender
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. |
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. |
AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
TObject hat auch keine Feldwerte.
|
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:
oder
class function ClassInfo: Pointer
Delphi-Quellcode:
: Zur Laufzeit kann ich doch dann problemlos schauen, von welchem Typ das Objekt tatsächlich ist.
function ClassType: TClass
Es ist ja nicht nur im Falle von
Delphi-Quellcode:
, es war grade das erste Beispiel, das ich zusammenzimmern konnte. Ich hoffe nur, irgendeine Compiler/Debuggereinstellung verdreht zu haben?
TObject
|
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. |
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. |
AW: Warum mag mir der Debugger so selten beim Auswerten helfen?
Zitat:
Zitat:
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. |
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:
nur eine Getter-Funktion hat, eine Property die der Debugger direkt ohne Gutes Zureden auswerten kann hätte sicher niemandem weh getan.
TObject
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 10:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz