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