![]() |
Selbst erstellte Komponente vom debugging ausschließen
Hallo zusammen,
ich habe mir eine eigene Komponente erstellt. Wenn ich diese benutze und den debugger laufen habe, komme ich jedesmal in diese Klasse rein und debugge alle selbst implementierten funktionen darin. Die meisten von euch kennen wahrscheinlich die prozedur "WriteString" von den inifiles um Daten in einem .ini-file zu speichern. Man ruf diese Prozedur wie folgt auf: var ini : Tinifile; ini.WriteString('SECTION', 'IDENT', 'VALUE'); Wenn man diesen Befehl debuggt, dann sieht man nur diesen Befehl, nicht aber das eigentlich Coding Schritt für Schritt, wie es in den inifiles deklariert wurde. procedure TIniFile.WriteString(const Section, Ident, Value: string); begin if not WritePrivateProfileString(PChar(Section), PChar(Ident), PChar(Value), PChar(FFileName)) then raise EIniFileException.CreateResFmt(@SIniFileWriteError , [FileName]); end; Nun die Frage, ist es möglich irgendeinen "zusatz" in dieser Unit zu deklarieren, damit man nicht beim debuggen in dieser landet, ein Compilerschlüssel o.ä. Vielen Dank, Gruß Hoschixv |
Re: Selbst erstellte Komponente vom debugging ausschließen
Also normalerweise machst du ja beim Schritt für schritt Debugger F8 und das geht nicht in die Subprozeduren rein, mit F7 kommst du rein, und gehst dann schritt für Schritt durch die Unterprozedur.
Übrigens, ist nicht in allen Delphi Versionen der Source komplett dabei ( So viel ich weis erst ab den Pro Versionen ). Ich bin mir daher nicht sicher, ob du den WriteString Code überhaupt veröffentlichen darfst, nimm es lieber wieder raus, bevor sich da jemand auf den Schlips getreten fühlt, deine Frage versteht man ja auch so. |
Re: Selbst erstellte Komponente vom debugging ausschließen
Um Units vom Debugging auszuschliessen, einfach den Quelltext an eine Stelle verschieben, die nicht im Projektpfad oder im Browse- (Such-)pfad liegt. Nur die kompilierten Units der Komponente müssen im Bibliothekspfad oder im Projektverzeichnis liegen.
* Library Path (Bibliothekspfad): da wo die kompilierten Units liegen * Browsing Path (Suchpfad): Verzeichnisse mit den Quelltexten die man während des Debuggings sehen will Cheers, |
Re: Selbst erstellte Komponente vom debugging ausschließen
Zitat:
Lösung: einfach die Units der Komponente ohne Debuginformattionen kompilieren einfach dieses an den Anfang der Units, welche nicht gedebuggt werden sollen
Delphi-Quellcode:
{$DEBUGINFO OFF}
{$DEFINITIONINFO OFF} {$LOCALSYMBOLS OFF} // oder in Kurz {$D-,Y-,L-} hab in meinem himXML z.B. alles in eine Include-Datei verlagert, welche im Prinzip dieses enthält
Delphi-Quellcode:
Am Ende sieht man die "Verwaltung" der Debuginformationen und nur wenn hxDebugable z.B. in den Projektoptionen definiert ist, dann kann man die Units debuggen, wo diese Datei eingebunden ist.
{$ALIGN 4}
{$BOOLEVAL OFF} {.EXTENDEDSYNTAX ON} // global {.FINITEFLOAT ON} // global {.IMPORTEDDATA OFF} {$LONGSTRINGS ON} {$METHODINFO OFF} {$MINENUMSIZE 1} {$OPENSTRINGS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} {$RANGECHECKS OFF} {$STACKFRAMES OFF} {$TYPEDADDRESS OFF} {$TYPEINFO OFF} {$WRITEABLECONST OFF} {$IF CompilerVersion >= 20.0} {$POINTERMATH OFF} {$STRINGCHECKS OFF} {$IFEND} {$IFDEF hxDebugable} {$DEBUGINFO ON} {$DEFINITIONINFO ON} {$LOCALSYMBOLS ON} {$ELSE} {$DEBUGINFO OFF} {$DEFINITIONINFO OFF} {$LOCALSYMBOLS OFF} {$ENDIF} So macht sich auch die spätere Fehlersuche besser, da es sich leicht umstellen läßt und man beim veröffentlichen der Units nicht aufpassen muß, daß man diese Option nicht vergißt umzustellen, da diese Einstellungen immer nur (projekt)-lokal sind :-D und nebenbei ist auch sichergestellt, daß gewisse andere Compileroptionen einem gewissen Standard entspricht. |
Re: Selbst erstellte Komponente vom debugging ausschließen
Zitat:
|
Re: Selbst erstellte Komponente vom debugging ausschließen
Zitat:
Aber im Prinzip kann man es auch in die Unit direkt reinmachen ... zumindestens bei der Methode es über die Projektoptionen zu steuern, lassen sich auch mehrere Stellen umstellen, aber in einer getrennten INC läßt sich auch mal was ändern, wenn man mehrere Optionen überall gleich haben möchte. |
Re: Selbst erstellte Komponente vom debugging ausschließen
Was mir da immer wieder fehlt, ist ein Möglichkeit, nur das Ermitteln der Parameter zu überspringen, was ja oft in eine Reihe von Stringoperationen der RTL führt, bei denen man nicht mal so ohne weiteres sieht wo diese genau beendet werden...
Kennt da jemand einen Trick? PMM |
Re: Selbst erstellte Komponente vom debugging ausschließen
Du könntest die entsprechenden Befehler statt mit F7 (Einzelschritt) mit F8 (Prozedurschritt) debuggen.
|
Re: Selbst erstellte Komponente vom debugging ausschließen
Das funktioniert leider nicht. Wenn du einmal mit F7 in der Parameterübergabe bist, dann kannst du mit dem folgenden F8 zwar ein noch weiteres "Absteigen" vermeiden, aber die einzelnen Schritte der Parameterübergabe muss du durchlaufen :( - wenn du direkt F8 benutzt, kommst du nicht in deine Zielfunktion..
PMM |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz