AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE IDE – Debugger-Anzeige komplexer Datenstrukturen?
Thema durchsuchen
Ansicht
Themen-Optionen

IDE – Debugger-Anzeige komplexer Datenstrukturen?

Ein Thema von Andreas13 · begonnen am 28. Jun 2022 · letzter Beitrag vom 30. Jun 2022
Antwort Antwort
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#1

IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 28. Jun 2022, 16:58
Hallo Community,
ich arbeite viel mit der Multipräzisions-Arithmetik-Bibliothek MPA (mp_real.pas) von unserem leider viel zu früh verstorbenen Gammatester: http://web.archive.org/web/*/wolfgang-ehrhardt.de und https://github.com/maelh/www.wolfgang-ehrhardt.de

Dort (in BTypes.pas und mp_types.pas) werden komplexe Datenstrukturen deklariert und von den Routinen in mp_real.pas benutzt. Ich komme damit schon seit vielen Jahren ganz gut zurecht, habe nur folgendes „Luxusproblem“:

Zum Debuggen muß ich stets eine Print-Anweisung für jede zu inspizierende MPA-Variable, MPA-Array etc. einfügen und das Programm immer neu kompilieren, um die aktuellen Variablen-Werte zu verfolgen, sonst sehe ich im Debugger nur winzige, nichtssagende Bruchstücke der großen Datenstrukturen.
Das ist recht mühselig, zumal selbst der Umgang mit Gammatester’s Routinen bei Leibe nicht einfach ist… Ich würde gerne meine Arbeit etwas erleichtern, daher

meine Fragen:

Wie könnte ich meine lästigen Print-Anweisungen aus dem Quelltext in die IDE „verlagern“, (in den Debugger „integrieren“) damit ich den Inhalt der MPA-Variablen im Debugger sofort sehen kann?

1): Geht es überhaupt?
2): Wie macht man so etwas?
3): Wie groß wäre der Aufwand?

Für jeden Hinweis wäre ich Euch sehr dankbar!

Viele Grüße

Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 28. Jun 2022, 17:17
Ich sehe zwei Optionen:

1) CodesiteLogging.Codesite.Send('MyText', MyObject);

Je nachdem, was Du für Objekte mit gibst, kannst Du nachher noch die Eigenschaften einsehen (z.B. StringListen)

2) eigener Visualizer

Du kannst auch eigene Viewer bauen und in der IDE registrieren. Mal hier als Einstieg:
https://www.delphipraxis.net/189852-...ptimieren.html
https://www.delphipraxis.net/206854-...n-threads.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#3

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 09:43
Hallo Stahli,

danke für die Infos!
Beim ersten Überfliegen der empfohlenen Quellen konnte ich die Vorgehensweise leider (noch) nicht verstehen. Auch habe ich nicht die in Deinem usoGuidVisualizer.pas https://www.delphipraxis.net/189852-...imieren-2.html aufgeführten Units: soGuid.pas, soInterfaces.pas, CodeSiteLogging.pas, so daß ich es nicht kompilieren kann.

Für mich würde ein ganz simpler Visualizer ohne Objekte reichen, denn ich kann die Variableninhalte stets in Strings umwandeln. Ich müßte lediglich meine Routine MPAF_To_String(..) irgendwie in den Debugger einbinden.

Gibt es nicht einen einfacheren Lösungsweg oder ein konkretes Beispiel für die Benutzung von usoGuidVisualizer?

Danke & Grüße
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 09:56
Die Units mit "so" und "Guid" sind Units aus meinem Projekt, also meine Datenstrukturen.
Das sollte nur als Beispiel dienen, wie man so einen Visualizer aufbauen kann.

Schau Dir am besten nochmal die Links zum DocWiki und die Hilfestellungen der anderen User an.
Wenn Du so einen Visualizer nutzen möchtest, dann musst Du Dich wohl da etwas durch beißen.
Eine ganz einfache Lösung gibt es offenbar nicht.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.605 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 16:27
Theoretisch kann man sich auch Functions bauen, die diese Strukturen als String ausgeben (oder auch in eine Datei schreiben). Diese kann man dann im "Evaluate and Modify"-Dialog der IDE aufrufen. Problematisch dabei ist nur, dass diese Functions gerne vom Linker wegegelassen werden, deshalb muss man dafuer sorgen, dass sie irgendwo auch aufgerufen werden, z.B. in der Initialization Section einer Unit.

Das ist zwar nicht so schön und bequem wie spezielle Visualizer, aber es funktioniert auch mit alten Delphi-Versionen, die die Visualzier-API noch nicht kannten. Und es ist deutlich einfacher zu implementieren.

Edit: Hier ist ein Beispiel:
https://blog.dummzeuch.de/2017/02/15...-for-tdataset/
Thomas Mueller

Geändert von dummzeuch (29. Jun 2022 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 16:34
Man kann auch im Evaluate mehrere Funktionen aufrufen und sich da den String zusammenbauen.

Für eine einmalige "mal kurz gucken"-Sache ist eine Funktion auch schneller/einfacher, als sich erst einen DebugViewer zu bauen und im Delphi zu registrieren.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#7

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 23:33
Danke Euch allen für Eure Tipps!

Allerdings habe ich noch gewisse Probleme:

Man kann auch im Evaluate mehrere Funktionen aufrufen und sich da den String zusammenbauen.
Der Aufruf der stringbildenden Function MPAF_To_String(..) funktioniert zwar, erhalte ich jedoch immer den Wert von 0.

Theoretisch kann man sich auch Functions bauen, die diese Strukturen als String ausgeben (oder auch in eine Datei schreiben). Diese kann man dann im "Evaluate and Modify"-Dialog der IDE aufrufen. Problematisch dabei ist nur, dass diese Functions gerne vom Linker wegegelassen werden, deshalb muss man dafuer sorgen, dass sie irgendwo auch aufgerufen werden, z.B. in der Initialization Section einer Unit.
Auch das funktioniert unter Verwendung Deiner Unit u_dzDatasetDump.pas, aber der Aufruf TDataset_Dump(MPAF_To_String(..)) liefert folgende Fehlermeldung: E2010 Inkompatible Typen: 'TDataSet' und 'string'.

Irgendetwas mache ich bestimmt noch falsch...

Danke & Grüße
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (29. Jun 2022 um 23:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 29. Jun 2022, 23:52
Die eine Funktion erstellt einen String und gibt ihn zurück
und diesen String willst du wirklich in eine andere Funktion reingeben, welche aber scheinbar ein Dataset haben will?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#9

AW: IDE – Debugger-Anzeige komplexer Datenstrukturen?

  Alt 30. Jun 2022, 10:56
Da habe ich wohl Thomas‘ Beispiel https://blog.dummzeuch.de/2017/02/15...-for-tdataset/ fehlgedeutet, denn ich kann nicht mit TDataSets dienen...
Die MPA-Bibliothek verwendet keinerlei Objekte, weil sie rein prozedural programmiert wurde.

Somit bleibt mir als schnelle Lösung meine bisherige, mit eingestreuten Print-Anweisungen. Alle hier gezeigten Alternativen passen leider nicht zu meinem Problem oder sind Kanonen auf mein "Spätzchen"...

Danke Euch allen für Eure Tipps und Hinweise!

Viele Grüße
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 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