Builder XE reinsteppen mit F7 geht nicht



  • ...habe den XE neu und habe ein Problem beim debuggen. Stehe ich im Debugger auf einem Funktionsaufruf und möchte in die Funktion reinsteppen mit F7 (Sgift F7 habe ich auch probiert)..lande ich immer in ustring.cpp oder controls.cpp oder ähnlichem, aber nicht in meiner Funktion. Was muss ich machen damit es wieder sinnvoll funktioniert?

    Gruss

    Jörn



  • Setze einen Breakpoint in deiner Funktion.
    Wenn du beim Aufruf einer Funktion F7 drückst, geht der Debugger erstmal in die zuerst aufgerufenen Funktionen. Das kann je nach Parameterliste eine Menge anderes Zeugs sein (Konstruktoren, CopyKonstruktoren, IndexOperatoren etc.)



  • Hallo,
    aber genau das will ich ja nicht machen. Da muss ich ja dann erstmal die Funktion suchen und nen BP setzen....ist sehr mühsam



  • Du kannst ja noch deine Parameterlist so vereinfachen, dass da möglichst wenig Funktionsaufrufe stattfinden. Z.Bsp. sollten dann keine Kopien (wenn möglich) und keine Type-Konvertierungen mehr stattfinden. Das kannst du machen indem du alle Parameter vor dem Funktionsaufruf Variablen des korrekten Typs zuweist und die dann übergibst.
    Zeig doch mal deinen Aufruf.



  • Hallo

    Es gibt keine weitere Alternative. F7 geht zur nächsten Quellcode-Zeile, die dem Compiler bekannt ist, und das kann eben auch eine Quellcode-Zeile aus der VCL oder der Standard-Lib sein. Der Compiler weiß nicht was "deine" Funktion ist oder nicht.

    bis bald
    akari



  • Man könnte die Pfade zur VCL und der Standardlib aus dem Suchpfad des Debuggers entfernen. Ob das aber eine so gute Idee ist?



  • Ok, Danke, das mit dem casten scheint das Problem zu sein. ist auch nicht immer das F7 nicht geht. Werde ich mal drauf achten. Danke nochmal. Ist mir beim BCB6 nicht aufgefallen, dass der das gemacht hätte....



  • Hallo

    Ich kann deine Aussage "ist auch nicht immer das F7 nicht geht" zwar nicht wirklich nachvollziehen (was bedeutet für dich "geht nicht"?), aber das Verhalten, möglichst tief zu gehen, ist so gewollt. Das ist kein Fehler.

    bis bald
    akari



  • California schrieb:

    ...habe den XE neu und habe ein Problem beim debuggen. Stehe ich im Debugger auf einem Funktionsaufruf und möchte in die Funktion reinsteppen mit F7 (Sgift F7 habe ich auch probiert)..lande ich immer in ustring.cpp oder controls.cpp oder ähnlichem, aber nicht in meiner Funktion.

    Im Debug-Build wird standardmäßig die Debug-Version von VCL/Delphi-RTL gelinkt. Du kannst mit der Release-Version linken, indem du in den Projektoptionen für die Debug-Konfiguration den Bibliothekspfad anpaßt: üblicherweise steht da "(BDS)\\lib\\debug" (bis 2010) oder "(BDSLIB)\$(PLATFORM)\debug" (ab XE) drin; du änderst das dann einfach zu "...\release" ab. Sodann ist keine Debug-Information in VCL- und RTL-Code mehr verfügbar, und du solltest mit F7 direkt in deinem eigenen Code landen.


Log in to reply