Einzelnen Beitrag anzeigen

Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#1

XE7 Debugger hält bei Exception eine Funktion darüber an.

  Alt 6. Jul 2015, 10:19
Hallo Community,

ich habe folgendes Problem:

Wenn eine Exception geworfen wird und ich auf "Anhalten" klicke, lande ich mit dem Debugger in der Zeile, in der die Funktion aufgerufen wird, die die Exception auslöst, nicht aber in der Funktion selbst.

Angenommen ich implementiere 2 Funktionen A() und B(). A() ruft in einer Zeile B() auf. B() greift in irgendeiner Zeile beispielsweise auf einen ungültigen Array-Index zu. Dann erhalte ich die Exception "Ungültiger Listenindex ..." (oder ähnlich). Klicke ich dann auf "Anhalten", stehe ich in Funktion A(), und zwar dort, wo B() aufgerufen wird. Es gibt dann leider keine Möglichkeit, herauszufinden, wo genau in Funktion B() die Exception ausgelöst wird. Ich kann das Programm abbrechen, einen Breakpoint zu Beginn von B() setzen, und dann Schritt für Schritt bis zur Exception debuggen. Das ist auf Dauer lästig, vor allem wenn die Exception nicht bei jedem Funktionsaufruf von B() ausgelöst wird.

Ich habe den Verdacht, dass der Compiler bestimmte Funktionen automatisch "inlinen" tut aus Optimierungsgründen, also aus A() und B() eine Funktion macht. Merkwürdig ist aber, dass dieses Verhalten ausnahmslos immer auftritt. Bei jeder Exception, bei der ich anhalte, lande ich grundsätzlich nur in der aufrufenden Funktion. Wenn das tatsächlich eine Optimierung ist, kann ich das dann irgendwo abschalten?

Für jegliche Hilfe bin ich sehr dankbar!

Gruß,
Sankt Rochus
  Mit Zitat antworten Zitat