AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verwendung des Debuggers in Delphi6?

Ein Thema von HJay · begonnen am 22. Mär 2012 · letzter Beitrag vom 22. Mär 2012
Antwort Antwort
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#1

Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:02
Ich habe noch wenig Erfahrung mit dem Debugger. Mein Programm gibt jetzt eine Meldung "invalid floating point operation" aus. Ich habe Debug-Optionen angeschaltet und beim Fehler springt der Debugger auf ein Code-Fragment aus der Unit "System":

Code:
procedure      _ROUND;
asm
        { ->   FST(0) Extended argument      }
        { <-    EDX:EAX Result                 }

        SUB    ESP,8
        FISTP  qword ptr [ESP]
        FWAIT
        POP    EAX
        POP    EDX
end;
Ich kann mit F7 und F8 dann etliche weitere kryptische Zeilen durchgehen, gelange aber nie zu dem Befehl aus meinem eigenen Code, der den Fehler ursprünglich verursacht hat.

Ich vermute den Fehler in einer länglichen Grafikroutine, die für sehr viele andere Fälle problemlos durchläuft und bei einer scheinbar ganz speziellen Konstellation diesen Floatingpoint-Fehler provoziert.

Wie kann ich Delphi dazu bringen, mir den Befehl meines Codes anzuzeigen, der den Fehler dann in Folge auslöst?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:11
Setze Breakpoints bei Aufruf von Round() in deinem Code
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:11
Setzt du auf externe Komponenen auf die DirectX oder OpenGL verwenden?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#4

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:29
Breakpoints: Das klappt nicht gut, weil die Routine Tausende Male aufgerufen wird, bis es zu dem Fehler kommt.

Ich habe den Fehler inzwischen gefunden: Es wird sinngemäß aufgerufen: Round(5.23 / 4.4e-17) und das liegt außerhalb des Integerbereichs.

Nichtsdestotrotz weiß ich einfach nicht, wie ich hätte herausbekommen können, WELCHER der vielen Round-Befehle den Fehler verursacht. Es ist einfach blöde, dass man in die Round-Routine direkt reinkommt mit den Debugger und nicht wieder eine Stufe höher zu dem Aufruf dieser Routine kommt.

Gibt es da echt keine Lösung?

Wie kann ich jetzt den Fehler des Round abfangen?
  Mit Zitat antworten Zitat
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#5

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:30
Setzt du auf externe Komponenen auf die DirectX oder OpenGL verwenden?
Nein. (Trotzdem danke)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:40
Ich habe den Fehler inzwischen gefunden: Es wird sinngemäß aufgerufen: Round(5.23 / 4.4e-17) und das liegt außerhalb des Integerbereichs.
..

Wie kann ich jetzt den Fehler des Round abfangen?
.. was wird denn berechnet, gibt es irgendwo definierte maximal bzw. minimal Werte
für den Nenner?

Ansonsten Exception abfangen und entsprechend reagieren.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
HJay

Registriert seit: 7. Dez 2009
172 Beiträge
 
Delphi XE7 Enterprise
 
#7

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 14:56
Ja, danke, ich fange jetzt die Exception ab.

Dennoch schade, dass es keine Lösung gibt, den Debugger zu instruieren, den aufrufenden Befehl auszugeben statt die aufgerufene Routine.
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 15:23
Dafür gibts den Aufruf-Stack ( Strg + Alt + S )
Glückauf
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 16:21
Wobei der Aufrufstack nebenbei gesagt bei Delphi 2005 und höher im Debugmodus standardmäßig angezeigt wird.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Verwendung des Debuggers in Delphi6?

  Alt 22. Mär 2012, 16:42
Man sich diesen aber besser schon kurz vor der Exception ansehn sollte, da er nach der Exception oftmals nicht korrekt aufgebaut wird.
> warten bis es knallt > Anhalten > Haltepunkt setzen > Neu starten > und hoffen man kommt zur richtigen Zeit bis zum Haltepunkt > Stacktrace angucken
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 05:40 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