AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte XP Usermanagers 6.1 Open Source
Thema durchsuchen
Ansicht
Themen-Optionen

XP Usermanagers 6.1 Open Source

Ein Thema von Luckie · begonnen am 24. Okt 2004 · letzter Beitrag vom 4. Feb 2020
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 16:36
Mit Debuginfos kompilieren
Delphi 4 und Debuginformationen?

Bei den neueren Delphis (XEx, vielleicht auch schon eher) kann man ja zwischen Debug und Release auswählen.

Bei Delphi 4 macht es aber keinen Unterschied, ob ich in den Projektoptionen unter Debuggen alles ausschalte (ist bei VCL-Formularprogramm voreingestellt aktiviert) oder bei Luckies Usermanager diese Debugoptionen, die als Standard ausgeschaltet sind, einschalte: VCL hat bietet mir in beiden Fällen die Haltepunkte an, Non-VCL hingegen in keinem Fall.

Edit: Stimmt bei VCL nicht, die Haltepunkte verschwinden tatsächlich, aber erst nach dem Speichern der Optionen. Edit 2: Auch nicht in jedem Falle...
Edit 3: Es bringt leider auch nichts, in Luckies DPR-Datei die Compilerschalter {$D+} und/oder {$DEBUGINFO ON} ganz am Anfang einzufügen.

Geändert von Delphi-Laie ( 7. Aug 2017 um 17:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#2

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:02
Edit: Stimmt bei VCL nicht, die Haltepunkte verschwinden tatsächlich, aber erst nach dem Speichern der Optionen. Edit 2: Auch nicht in jedem Falle...
Diese Optionen standen bei Delphi 7 und früher in der .dof Datei:
Zitat:
DebugInfo=1
Wichtig: Nach der Änderung der Option das Projekt erzeugen, nicht nur normal kompilieren!
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:10
Vielen Dank, Sebastian!

Ich hatte schon gehofft, mit diesem Deinem Hinweis den XP Usermanager endlich debuggen zu können, aber Delphi 4-7 verweigern sogar nach dem Setzen / Einschalten dieser Option in der dof-Datei hartnäckig das Setzen der Haltepunkte. Wird also immer noch nichts mit dem Debuggen.

Edit: Die von Dir genannte Option steht im Abschnitt "[Linker]". Also schaute ich in der IDE bei den Projektoptionen in die gleichnamige Rubrik, also unter "Linker". Da gibt es sogar eine Option "Mit externen Debug-Symbolen". Die war ausgeschaltet. Aber auch nach ihrem Einschalten gibt es keine Haltepunkte.

Geändert von Delphi-Laie ( 7. Aug 2017 um 18:20 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:15
Schau bitte mal alle eingebundenen Units durch, ob da irgendwo ein {$D-} zu finden ist, dann werden dort die Debuginfos wieder ausgeschaltet.

Ist ein leidiges Problem, das ich von Delphi 7 kenne.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: XP Usermanagers 6.1 Open Source

  Alt 7. Aug 2017, 18:25
Schau bitte mal alle eingebundenen Units durch, ob da irgendwo ein {$D-} zu finden ist, dann werden dort die Debuginfos wieder ausgeschaltet.

Ist ein leidiges Problem, das ich von Delphi 7 kenne.
Danke, Stephan!

Das war es zwar auch nicht, aber Du brachtest mich auf die richtige Fährte: Es liegt an der eingebundenen bzw. konkret aufgerufenen

{$I CompilerSwitches.inc}

Diese entfernt bzw. auskommentiert, und schon sind die Haltepunkte da!
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 09:11
So, einen ersten kleinen Fehler habe ich entdeckt. Klein bezieht sich nicht auf seine Folge - immerhin beendet sich das Programm dann selbst bzw. wird von Windows beendet, allerdings ohne weiteren Schaden - sondern die Wahrscheinlichkeit seines Auftretens.

Wird dem Programm unter Extras -> Benutzer importieren eine ungültige XML-Datei angeboten, endet das Programm mit "Usermanager.exe hat ein Problem festgestellt und muss beendet werden." und danach mit "Exception Exception in Modul Usermanager.exe bei 0001BB90". Das passiert, wenn das Programm separat gestartet wird. Wird es aus der IDE heraus gestartet, kommt hingegen "Runtime Error 217 at 00011F07".

Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.

Lange Rede, diesen try-Block mit einem weiteren try..except umhüllt, also
Delphi-Quellcode:
function ImportXMLThread(p: Pointer): Integer;
var
  ImPort : TImport;
  Filename : WideString;
begin

try
  Filename := PThreadParams(p)^.Filename;
  Import := TImport.Create(CurComputer, Filename);
  try
    if not Import.Import then
    begin
      SetCursor(LoadCursor(0, IDC_ARROW));
      case MessageBox(hApp, PChar(Format(rsImportError, [ExtractFilepath(ParamStr(0)) + LOGFILE])), PChar(APPNAME),
        MB_ICONWARNING or MB_YESNO) of
        IDYES: ShellExecute(hApp, 'open', PChar(ExtractFilepath(ParamStr(0)) + LOGFILE), nil, nil, SW_NORMAL)
      end;
    end;
  finally
    Import.Free;
  end;
except
//ggf. eine gewünschte Fehlerausgabe
end;

Result := 0;
end;
, und schon läuft auch das reibungslos.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 09:53
Du könntest ein Pull/Merge-Request auf GitHub erstellen damit Sebastian das einpflegen kann.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.929 Beiträge
 
Delphi 12 Athens
 
#8

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 11:25
Der Fehler passiert in der Funktion "ImportXMLThread" und erstaunt mich insofern, als daß dort doch mit "try..finally" ihm entgegengewirkt wird.
Oh, böse.
Die Methode Import liefern zwar einen Boolean zurück, schmeißt aber bei Misserfolg eine Exception.
Da das eine Threadmethode ist, landet die dann direkt in den aufrufenden Windows-Routinen.

Bei der Konstellation macht es gar keinen Sinn eine Exception zu werfen. Dazu kommt, dass Exception.Create in Unit Exceptions inherited nicht aufruft und somit die Message der Exception noch dazu leer ist.

try..finally sorgt ja nur dafür, dass Import.Free noch ausgeführt wird, behandelt aber den Fehler nicht.

Und CoDOMDocument40.Create ist auch etwas veraltet, das gibt es auch neueren Systemen vermutlich gar nicht mehr.

Ich schaue mal sobald ich dazu komme. Sollte schnell gehen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 10:28
{$I CompilerSwitches.inc} Diese entfernt bzw. auskommentiert, und schon sind die Haltepunkte da!
Würd' ich nicht so machen, da man dann nie weiß, ob durch andere Schalter nicht irgendwelche Nebeneffekte auftreten. Ändere lieber in der {$I CompilerSwitches.inc} den Debugschalter ab, dann gilt das solange für alle Stellen, an der die {$I CompilerSwitches.inc} eingebunden ist, bis Du die Änderung dort zentral wieder rückgängig machst.

Der Sinn der Includedatei ist es ja, die Änderungen zentral durchführen zu können und nicht nach dem Motto: Entweder alles oder nichts.

Und da die Includedatei in der ersten Zeile ein {.$define DEBUG} enthält, wäre es sinnvoller dort den . zu entfernen, da in der Datei über diesen Compilerschalter weitere Abhängigkeiten berücksichtigt werden.

Interessant wäre es zu prüfen, ob der von Dir entdeckte Fehler nach dem Aktivieren der Include-Datei weiterhin auftritt oder ob es sich hierbei um einen Nebeneffekt handelt, der durch die Änderung der Compilerschalter auftritt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: XP Usermanagers 6.1 Open Source

  Alt 8. Aug 2017, 10:37
Und da die Includedatei in der ersten Zeile ein {.$define DEBUG} enthält, wäre es sinnvoller dort den . zu entfernen, da in der Datei über diesen Compilerschalter weitere Abhängigkeiten berücksichtigt werden.
Genau so habe ich es auch immer gemacht. Wenn ich dran gearbeitet habe, habe ich so das Debugging aktiviert und später wieder aktiviert, wenn ich die Version zum Veröffentlichen compiliert habe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 04:18 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