Autor |
Beitrag |
Metschu
      
Beiträge: 135
Windows XP SP2 Home
Delphi 7; Delphi XE2-Starter
|
Verfasst: Sa 26.11.11 19:35
Nochmal nabends
Ich hab ein etwas umfangreicheres Programm in Delphi 7 geschrieben, welches um die 3,6 MB hat. Dies blieb auch so, nachdem ich es mit Delphi XE2 komplett überarbeitet habe.
Nun habe ich ein neues Project erstellt, was schon 7 MB groß ist, und dabei ist hier nur eine Form, ohne inhalt und Quelltext...
Ist das bei XE normal oder muss ich da noch irgendwas einstellen?
Danke schonmal!
Gruß
Torsten
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 26.11.11 20:11
Wenn du in der Projektverwaltung die Buildkonfiguration auf Release umstellst, ist es kleiner, dafür hast du auch keine Debuginfos mehr drin.
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Sa 26.11.11 21:24
jaenicke hat folgendes geschrieben : | auf Release umstellst |
Es reicht schon aus, wenn man bei der Debug-Konfiguration die Projekt/Optionen/Linken/Debug-Informationen auf False stellt. Dann werden keine TurboDebugger Symbole (tds) an die EXE angehängt, die für Delphi vollkommen irrelevant sind, da der Delphi-Debugger seine Informationen aus den *.dcu und *.dcp Dateien zieht und nicht aus den Debug-Symbolen die an die EXE angehängt sind.
Warum Embarcadero diesen Schalter in XE2 auf einmal standardmäßig aktiviert hat, wissen die Götter.
_________________ Ist Zeit wirklich Geld?
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Sa 26.11.11 21:27
jaenicke hat folgendes geschrieben : | Wenn du in der Projektverwaltung die Buildkonfiguration auf Release umstellst, ist es kleiner, dafür hast du auch keine Debuginfos mehr drin. |
Reicht das? Soweit ich mich entsinne, rückte ich auch in den Projektoptionen, ich glaube unter "Linker" (oder war es doch unter "Compiler"?), den Debuginformationen mit einem entfernten Häkchen zuleibe.
Substantiell bringt es auch etwas, den Laufzeitinformationen (RTTI) zuleibezurücken, das verkleinert die Compilate nach meiner Erfahrung noch einmal um ca. 30%. Leider ist dazu "Handarbeit" nötig; in Delphi gibt es dazu keine einfach zu-/abschaltbare Option (was auch dem Konzept der vorcompilierten Units widerspräche).
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 26.11.11 22:48
AndyB hat folgendes geschrieben : | Dann werden keine TurboDebugger Symbole (tds) an die EXE angehängt, die für Delphi vollkommen irrelevant sind, da der Delphi-Debugger seine Informationen aus den *.dcu und *.dcp Dateien zieht und nicht aus den Debug-Symbolen die an die EXE angehängt sind. |
Macht das der neue Remotedebugger? Der alte bis XE hat das noch nicht gemacht.  Davon abgesehen liefern wir die .dcu Dateien nicht mit, so dass schon das Erstellen eines Stacktraces ohne diese Daten kaum möglich ist ohne dass wir hinterher erst die Einsprungstellen abgleichen müssen.
Zudem macht der neue Remotedebugger das Remotedebugging ja erst wirklich interessant für die breitere Nutzung, insofern macht es schon Sinn das standardmäßig zu aktivieren.
Wir liefern die .exe auch mit vollen Debuginformationen aus und loggen jegliche Meldung, die dem Benutzer angezeigt wird, inklusive Stacktrace. Auf diese Weise kann man ohne großen Aufwand sagen warum eine Meldung kam und im Falle eines Fehlers direkt dort ansetzen.
Und davon abgesehen:
Die Einstellung heißt nun einmal Debug. Und dabei ist die Größe der Exe doch irrelevant, die Daten aber ggf. notwendig. 
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: So 27.11.11 12:20
jaenicke hat folgendes geschrieben : | Macht das der neue Remotedebugger? |
Der RemoteDebugger nutzt die *.rsm Datei, die alle Debugsymbole aus den DCP und DCU enthält. Und die über einen anderen "Linken" Schalter geregelt wird.
Zitat: | Davon abgesehen liefern wir die .dcu Dateien nicht mit, so dass schon das Erstellen eines Stacktraces ohne diese Daten kaum möglich ist |
Die Map-Datei ist dafür völlig ausreichend und sie enthält nicht die Variablennamen sämtlicher lokaler und globaler Variablen, die für einen Stacktrace unnötig sind
Zitat: | Zudem macht der neue Remotedebugger das Remotedebugging ja erst wirklich interessant für die breitere Nutzung, insofern macht es schon Sinn das standardmäßig zu aktivieren. |
Dafür gibt es den Schalter "Mit externen Debug-Symbolen". Die "Debug-Informationen" sind nur für den BCB-Debugger von Interesse, da er auf dem TDS Format agiert. (an dem ich übrigens gerade stark herumschraube, um den C++Builder Nutzer auch mal ein bisschen mehr Geschwindigkeit zu geben).
Zitat: | Wir liefern die .exe auch mit vollen Debuginformationen aus und loggen jegliche Meldung, die dem Benutzer angezeigt wird, inklusive Stacktrace. Auf diese Weise kann man ohne großen Aufwand sagen warum eine Meldung kam und im Falle eines Fehlers direkt dort ansetzen. |
Dito. Nur nutzen wir dafür jdbg Dateien (enhält alle für einen Stacktrace notwendigen Daten aus der Map-Datei und ist komprimiert), die in die EXE gelinked werden. Das geht mit der JCL recht einfach und MadExcept und EurekaLog können die auch verwenden.
Zitat: | Und davon abgesehen:
Die Einstellung heißt nun einmal Debug |
Das ist mir schon klar. Aber die Mehrzahl der Entwickler, die sich mit dem Releasen von Software nicht wirklich auseinandergesetzt haben bzw. bei Delphi 7 stehen geblieben sind, liefern immer ihre Debug-EXE Dateien aus.
_________________ Ist Zeit wirklich Geld?
|
|
jaenicke
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 27.11.11 13:25
AndyB hat folgendes geschrieben : | Dafür gibt es den Schalter "Mit externen Debug-Symbolen". Die "Debug-Informationen" sind nur für den BCB-Debugger von Interesse, da er auf dem TDS Format agiert. |
Ah, ok, das hatte ich ehrlich gesagt nie versucht und zum Remotedebugging immer beide aktiviert. Weil es eh schon so lange dauerte bis das endlich ging, hatte ich da keine Lust zu experimentieren.
Nebenbei bei dem Thema:
Kennst du vielleicht eine Möglichkeit unter XE oder XE 2 das Laden eines externen Prozesses auf eine Taste zu legen? Oder muss ich dafür einen eigenen Experten bzw. CnWizards-Skript benutzen?
AndyB hat folgendes geschrieben : | Das ist mir schon klar. |
Das war mir schon klar. 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 27.11.11 14:18
Und für Leute, die nen brauchbaren Stack-Trace OHNE Ausliefern von Debug-Symbolen haben, gibt es OmMAP, was einem mit Hilfe der Mapfile+Angabe der abzufragenden Pointer.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: So 27.11.11 14:42
jaenicke hat folgendes geschrieben : | Nebenbei bei dem Thema:
Kennst du vielleicht eine Möglichkeit unter XE oder XE 2 das Laden eines externen Prozesses auf eine Taste zu legen? Oder muss ich dafür einen eigenen Experten bzw. CnWizards-Skript benutzen? |
Tastenkürzel nicht, aber man kann sich das "Prozess laden..." als Icon auf die Toolbar legen.
_________________ Ist Zeit wirklich Geld?
|
|
|