Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Keine Debuginfos für "eine" Funktion oder Codezeile ?

  Alt 18. Apr 2024, 20:29
Delphi-Version: 12 Athens
N'abend,

warum kann man die Debuginfos nicht nur für eine Funktion abschalten? (bzw. wenn doch, wie?)

Ich hab in einer Unit, in einer Klasse ein paar kleine Hilfsfunktionen, welche oft nichts machen, außer in einer Schleife etwas zu suchen, und da wäre es doch zu praktisch, wenn ich beim Debuggen des restlichen Codes, dort nicht ständig drin landen würde.
(ja, F8, aber in andere Funktionen will ich ja rein ... nur da eben nicht ... ist auch zu anstrengend ständig zwischen F7 und F8 entscheiden zu müssen)

Prinzipiell denk ich mir, es kann doch nicht so schwer sein, diese eine/paar Zeilen aus der Liste der Codezeilen+Adressen einfach wegzulassen.


Delphi-Quellcode:
...
{$DEBUGINFO OFF}
hier nicht
{$IFDEF _DEBUGINFO_} {$DEBUGINFO ON} {$ENDIF}
...
und ganz oben noch ein {$IFOPT D+} {$DEFINE _DEBUGINFO_} {$ELSE} {$UNDEF _DEBUGINFO_} {$ENDIF} .

Egal was man macht, es zählt immer nur die letzte Angabe, für die komplette Unit.

Leider ist es in der Hilfe oft nicht ersichtlich, welche Reichweite die einzelnen Compileroptionen besitzen.
* Einige wirken ab da, wo sie definiert wurden, bis zum Ende der Unit (oder bis zur nächsten Angabe)
* bei Einigen wirkt sich die letzte Angabe ab Ende der aktuellen Codezeile bis zum Ende aus
* Manche werden, wie hier erst am Ende der Unit nur für diese Unit ausgewertet
* Anderes wirkt über das komplette Programm und die letzte Angabe wird dann für das Programm verwendet, z.B. ob die eventuell vorhandenen DebugInfos dann ins Kompilat gelinkt oder doch verworfen werden, oder z.B. die BaseAdresse, StackSize, LibSuffix usw.
* ...

Außerdem sind die dort angegebenen DEFAULTs leider auch nicht mehr ganz "korrekt".
z.B. steht da, dass die Überlaufprüfung standardmäßig OFF ist, was aber nur für die DPR gilt (direkt an den DCC übergeben), aber nicht die Projektionen (DPROJ),
allerdings ist standardmäßig die Debug-Config aktiv und dort ist inzwischen diese Option nunmal standardmäßig ON.

z.B. funktioniert hier nur das Erste, wie gewollt:
Delphi-Quellcode:
{$OVERFLOWCHECKS OFF} 
i := i * 123;
{$OVERFLOWCHECKS ON}
Delphi-Quellcode:
{$OVERFLOWCHECKS OFF} 
i := i * 123
{$OVERFLOWCHECKS ON} 
;
$2B or not $2B

Geändert von himitsu (18. Apr 2024 um 21:39 Uhr)
  Mit Zitat antworten Zitat