AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Selbst erstellte Komponente vom debugging ausschließen
Thema durchsuchen
Ansicht
Themen-Optionen

Selbst erstellte Komponente vom debugging ausschließen

Ein Thema von hoschixv · begonnen am 15. Dez 2009 · letzter Beitrag vom 15. Dez 2009
Antwort Antwort
hoschixv

Registriert seit: 13. Jul 2007
2 Beiträge
 
#1

Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 07:46
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
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 07:51
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.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 08:10
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,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 08:22
Zitat von mjustin:
Um Units vom Debugging auszuschliessen, einfach den Quelltext an eine Stelle verschieben,
das halte ich für etwas unpraktisch.

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:
{$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}
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.
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

und nebenbei ist auch sichergestellt, daß gewisse andere Compileroptionen einem gewissen Standard entspricht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 08:28
Zitat von himitsu:
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}
Falls es nicht nur eine Unit ist dann ist es praktischer mit Include-Dateien zu arbeiten um das Debugging zentral Steuern zu können. Praktisch jede Komponentensammlung macht das.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 08:32
Zitat von Bernhard Geyer:
Falls es nicht nur eine Unit ist dann ist es praktischer mit Include-Dateien zu arbeiten um das Debugging zentral Steuern zu können. Praktisch jede Komponentensammlung macht das.
Jupp, hab ich auch grad noch dazueditiert

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
PMM

Registriert seit: 17. Feb 2005
101 Beiträge
 
#7

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 09:30
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 10:07
Du könntest die entsprechenden Befehler statt mit F7 (Einzelschritt) mit F8 (Prozedurschritt) debuggen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
PMM

Registriert seit: 17. Feb 2005
101 Beiträge
 
#9

Re: Selbst erstellte Komponente vom debugging ausschließen

  Alt 15. Dez 2009, 10:51
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz