Autor Beitrag
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 352
Erhaltene Danke: 31

Windows 8.1
Delphi 10.3 Comm. Edition
BeitragVerfasst: So 24.10.21 21:46 
Hallo,

wennn ich ein Programm in einzelnen Schritten (F7,F8) ausführe, dann kann ich nach jedem Schritt mit dem Cursor auf eine Variable gehen und deren Wert wird angezeigt. Im einem der Debug-Fenster werden die aktuellen lokalen Variablen angezeigt.

Wenn ich das Programm ohne Einzelschritte starte und es passiert ein Fehler wie z. B. "Feldindex außerhalb der Grenzen" und ich halte das Programm in dem Dialogfenster dann an, dann sind alle Werte nicht verfügbar oder haben unsinnige Werte. Dabei wäre es gerade in so einer Situation hilfreich, wenn man sich alle Werte ansehen könnte.

Wenn ich "Fortsetzen" in der Fehlermitteilung anklicke, dann wird die ganze Procedur beendet und die Werte aller lokalen Variable sind auch verloren.

Gibt es da einen Trick, wie man sich die Werte der Variablen ansehen kann? Ich habe allerdings die Befürchtung, dass die Variablen außerhalb des Einflussbereiches von RADStudio verloren gehen.

Hat jemand eine Erklärung?

Viele Grüße
GuaAck
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19063
Erhaltene Danke: 1701

W10 x64 (Chrome, Edge)
Delphi 10.4 Ent, Oxygene, C# (VS 2019), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.10.21 08:03 
Ein Screenshot wäre hilfreich. Ich vermute, dass du in der Liste der Threads noch nicht den aktuellen Thread (wenn du nicht mit Threads arbeitest, sollte es der erste sein) angeklickt hast. Wenn du das machst und im Stacktrace den passenden Eintrag auswählst, solltest du lokale Variablen eventuell noch sehen können.

Allerdings sind durch die Exceptionbehandlung bzw. durch die Gültigkeit der Variablen oft nicht alle verfügbar. Das ist normal, ja.
Hintergrund, einfach gesagt: Die Variablen werden ja in Registern bzw. auf dem Stack abgelegt. Wenn diese zu dem Zeitpunkt dann nicht den Wert der Variable beinhalten, siehst du den Wert auch nicht. Er ist dann für den Debugger nicht verfügbar.

Du kannst aber ja einen Haltepunkt setzen, in dem du die Bedingung prüfst, dass der Feldindex außerhalb der Grenzen ist. Oder du prüfst das im Quelltext und setzt dort dann einen Haltepunkt. Am Haltepunkt sind auch die Variablen verfügbar, die zu dem Zeitpunkt gerade verwendet wurden.
GuaAck Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 352
Erhaltene Danke: 31

Windows 8.1
Delphi 10.3 Comm. Edition
BeitragVerfasst: Mo 25.10.21 08:52 
Danke!

Dem Aufrufstack habe ich nie etwas entnehmen können, aber man muss eine Zeile anklicken, und dann sieht man wirklich viel!

Viele Grüße
GuaAck