![]() |
[BDS 2006] Debugger Visualizer
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
ich hatte mal so eine spontane Idee mit der man die Debugging Experience in Delphi verbessern kann. Hab mich dann mal schnell ein Bisschen in die OpenTools API eingelesen und raus kam eine allererste Demo-Version der Delphi Debugger Visualizer. Sinn des Ganzen? Ähnlich wie in Visual Studio 2005 soll diese IDE Erweiterung einem einfach dabei helfen, seine Variablen zu analysieren. Als Proof-Of-Concept hab ich mir einmal TStringList vorgenommen (siehe angehängten Screenshot). Den Sourcecode zu dem Package habe ich auch angehängt. Zum Installieren einfach die Projektdatei öffnen, und auf Installieren klicken (wie eben bei Packages so üblich). Der Menüpunkt selbst ist versteckt unter "Help/Inspect...". Ich möchte darauf hinweisen, dass dies Beta-Software ist. Zum Inspizieren von StringLists und multi-line strings sollte es aber schon allemal reichen. Ich hoffe, a) so etwas finden auch andere praktisch b) sowas gibt's nicht schon :) Grüße Daniel |
Re: [BDS 2006] Debugger Visualizer
Zitat:
Läuft das auch unter D2005? Der Screenshot zeigt ja D2006 (oder ist es Turbo)? Sehr sinnvoll wäre auch, wenn man die Stringliste noch in eine Datei speichern könnte. Ciao, Ralf |
Re: [BDS 2006] Debugger Visualizer
Zitat:
Mit dem Speichern in eine Datei hast Du sicher recht. Dazu werde ich mir mal was überlegen. Außerdem möchte ich ein besseres Control zur Darstellung verwenden (mit Sortierung, Darstellung vom angehängten Objekt etc) Ich bin auch noch am überlegen, welche Datentypen man sonst noch direkt unterstützen könnte. Dazu fällt mir ein:
Hat jemand sonst noch gute Ideen dazu? Ein weiteres Problem ist, dass ich nur die "Evaluate" Funktion verwenden kann, um an die Daten zu kommen. Das mache im Moment so:
Das funktioniert prinzipiell auch ganz gut, hat aber ein großes Performanceproblem. Ich hab auch mal "CommaText" ausprobiert, aber das wird leider rausoptimiert wenn man es nicht verwendet...auch blöd :) Mir ist aber aufgefallen, dass man via "Evaluate" auch an private Variablen ran kommt (und sowas kann ja nicht rausoptimiert werden). So könnte man an alle Elemente auf einmal kommen und sollte keine Performanceprobleme mehr haben (theoretisch :)) Werd damit noch ein Bisschen rumspielen, weil die aktuelle Performance schrottig ist. Hat sowas schon einmal jemand gemacht? Vielleicht übersehe ich ja eine simple Sache...? |
Re: [BDS 2006] Debugger Visualizer
Hey, sowas in der Art ist echt praktisch :thumb:
Von Haus aus kann man ja z.B. bei TStringList nur rausfinden, wie viele Einträge sie hat, aber an die werte zu kommen gibts ncihtmal ne komplizierte Möglichkeit oder :gruebel: Wenn aus der allerersten Demo mal ein vollwertiges Produkt wird bin ich Stammkunde :-D btw: Mitentwickler suchst du nciht zufällig einen :mrgreen: |
Re: [BDS 2006] Debugger Visualizer
Zitat:
Ein "In Zwischenablage kopieren" Button für die StringList wäre auch nicht schlecht. Ich muss jedesmal die #13#10 aus dem TSQLQuery.SQL.Text entfernen wenn ich das SQL Statement in einem anderen Programm testen will. |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
(Wenn man z.B. eine StringList in einer Schleife durchläuft und den Wert abfragen will) Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
Ansonsten: Lustiges 'Proof-Of-Concept'... müsste man aber ausbauen, denn für die paar mal, wo man sich alle(!) Elemente einer Stringliste anschauen muss, reichen imho o.g. Tricks. |
Re: [BDS 2006] Debugger Visualizer
[quote="alzaimar"]
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Hey, das Ding klingt echt nicht schlecht. Werds mir mal anschauen, so spontan würd mir noch eine Hexdump-Anzeige des zugehörigen Speicherbereichs fehlen, ab und zu muss ich mal schauen ob nen Offset passt, oder ähnliches. Kann man natürlich auch auf Umwegen über das Debug-Fenster "CPU", aber nen zusätzliches Fenster was mir dann dort nicht die Cursorposition kaputtmacht wäre super :)
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
a) Eigenes Fenster b) Debug-Fenster CPU nehmen und dort an die entsprechende Stelle springen Die Lösung b) wäre vermutlich simpler, hätte aber den Nachteil, dass ich die aktuelle Position in dem Fenster im Hexdump verliere wenn ich mir was anderes anschauen will. *Das* meinte ich damit :) |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Mal eine andere Frage: Funktioniert das Package eigentlich auch auf einem anderen Rechner als bei mir? ;) Hat das schonmal jemand ausprobiert...?
|
Re: [BDS 2006] Debugger Visualizer
Habs gerade mal kompiliert und installiert, scheint gut zu funktionieren. Zwei Sachen sind mir dabei gleich noch aufgefallen:
- History fehlt mir (das Eingabefeld sollte sich zumindest den letzten Wert merken, Auswahlliste der letzten x Eingaben wäre natürlich noch besser) - Der Menüpunkt ist unter Hilfe etwas sehr versteckt. Kannst Du das nicht unter Ansicht, Debug-Fenster mit eintragen? Oder unter Start, dort finden sich ja auch die Punkte "Auswerten" und "Untersuchen". - Hotkey wäre hilfreich, beim debuggen bin ich meist mit beiden Händen auf der Tastatur, zur Maus greifen ist da irgendwie lästig. Mag sich jetzt sehr bequem anhören, aber es sind immer gerade solche kleinen, eigentlich unwichtigen Feinheiten, die für mich die guten von den wirklich hervorragenden Tools unterscheiden. - richtig super wäre es, wenn das Inspektorfenster nicht modal wäre :) Edit: Jetzt sinds glatt mehr als zwei Sachen geworden :D Nachtrag: - Standard-Focus sollte auf GO und nicht auf Close liegen. Ich hab gerade aus Gewohnheit Enter gedrückt nach der Eingabe des Variablennamens und dann schloss sich das Fenster :) - Der Inspector sollte in der Lage sein, einen markierten Text als Eingabe zu übernehmen (wenn der markierte Text einer Plausibilitätsprüfung standhält). Dann kann man in der IDE das zu inspizierende Objekt markieren und das Inspectorplugin aufrufen und erhält sofort eine Anzeige der Details. |
Re: [BDS 2006] Debugger Visualizer
Vielen Dank für's Ausprobieren und die Anregungen. Die meisten Punkte habe ich einfach deshalb noch nicht gemacht, da ich bisher nur circa 3 Stunden Zeit investiert hab :) Abgesehen von dem nicht-modalen Fenster habe ich eigentlich auch alles davon vor. Eine Integration in das Watch-Window wäre natürlich ideal, aber ich bezweifle, dass das die OpenTools API hinbekommt :( Das mit dem nicht-modalen Fenster wird glaube ich an technischen Hürden scheitern; bei OTA Addins sind halt bei kleinsten Fehlern Schutzverletzungen an der Tagesordnung und wenn das dann auch noch nicht-modal ist...oh weia :)
Bzgl. Standardfokus hast Recht. Das werd ich ändern. Hat jemand einen Vorschlag für ein gutes Grid? Unter .Net nehm ich immer eines der DevExpress Grids, die es ja für VCL auch gibt (aber leider teuer). Das Delphi eigene Grid ist m.E. ein Witz... Grüße Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Liste der Anhänge anzeigen (Anzahl: 4)
Hi
nach einer viel zu langen nächtlichen Programmiersitzung an diesem Ding möchte ich gerne die Fortschritte zeigen. Ich mach diesmal nur Screenshots, da mir das Zusammenpacken grad zu mühsam ist (ist scho spät :) ) Bei StringLists habe ich einiges an Funktionalität reingepackt (verwende nun VirtualTreeView): - Copy to Clipboard - Multi-Select - Column Reordering - Inspect Befehl, um einzelne Strings ODER Objekte weiter zu untersuchen Strings können nun als Plain/Xml oder Html dargestellt werden. So long and thanks for all the fish |
Re: [BDS 2006] Debugger Visualizer
Liste der Anhänge anzeigen (Anzahl: 1)
Und noch ein Screenshot. Dies passiert, wenn man in StringList1.png von vorhin auf Inspect klickt (während man auf der Spalte "Object" steht)
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Hallo erstmal,
ich habe mir das Projekt angeguckt und es gefällt mir sehr gut. Wo kann man in solchen Projekten eigentlich festlegen, dass in deinem Beispiel der Button "Inspect..." unter dem Menüpunkt "Hilfe" zu finden ist?! Wird das auch in der *.pas gemacht? MFG Alex |
Re: [BDS 2006] Debugger Visualizer
Zitat:
Grüße |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Sieht prima aus. Eine HEX Ansicht für Strings wäre noch nett.
paresy |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
Machs einfach so wie die Borländer es auch gemacht haben: Kopiere die die VirtualTrees-Unit und benenne sie um. (MeineVirtualTrees.pas) |
Re: [BDS 2006] Debugger Visualizer
Zitat:
1. Wenn ich eh schon kein abhängiges Package verwende, warum muss ich dann die Unit noch umbenennen? Müssen Unit-Namen irgendwie global eindeutig sein? 2. Wenn ich das Ding am Ende via Installer ohne SourceCode ausliefern möchte...darf man die Datei dann einfach so mit ausliefern? Grüße |
Re: [BDS 2006] Debugger Visualizer
zu 1.: Innerhalb aller zur gleichen Zeit geladenen Packages darf es keine doppelten Units geben.
zu 2.: Da musst du imho die Lizenz für den VT befragen. |
Re: [BDS 2006] Debugger Visualizer
Zitat:
zu 2.: werd ich machen |
Re: [BDS 2006] Debugger Visualizer
OK blöde Frage hast es ja schon gesagt...kann's nur kaum glauben :)
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
Zitat:
Zitat:
Ein weiterer Vorteil von DLL-Experten ist, dass sie nicht einfach per "Excluded Packages" Projekt-Option während der Kompilierung abgeschaltet werden. (Ein Phänomen, dass mich beim Entwickeln von Bcc32Pch Nächte gekostet hatte, weil ich die Schutzverletzung nicht finden konnte). |
Re: [BDS 2006] Debugger Visualizer
Sehr schön. Dann werd ich mir Dll-Experten angucken. Dachte irgendwo gelesen zu haben, dass es die seit Delphi 6 nicht mehr gäbe, aber hab mich wohl verlesen. Kann man die eigentlich genauso einfach entwickeln (sprich compile-und-schon-da) oder gibt's da auch so Probleme mit File-Lockings wie bei .Net-Experten?
|
Re: [BDS 2006] Debugger Visualizer
Quote from
![]() Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Ich würde da die DLL nehmen, so können auch die User von Turbo Delphi Explorer es nutzen.
Dein Package hat beim Installieren zwei Fehler in der Datei IdePluginUnit.pas angezeigt : 1.) Unbekannter Bezeichner erBusy in Zeile 155 2.) Unbekannter Bezeichner ReportMemoryLeaksOnShutdown in Zeile 179 Ich habe es probehalber mal auf einer englischen BDS2005 ausprobiert. |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
erBusy...vielleicht ist das neu seit BDS 2006. Was passiert, wenn Du den Case komplett rausschmeisst? Zum Thema Delphi Explorer: Hat das nicht Borland mit nem jüngsten Patch auch noch verboten? Grüße |
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Re: [BDS 2006] Debugger Visualizer
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:06 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-2025 by Thomas Breitkreuz