AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Unterschiedliche Ergebnisse beim kompilieren, und Ursache
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Ergebnisse beim kompilieren, und Ursache

Ein Thema von VoSs2o0o · begonnen am 3. Feb 2024 · letzter Beitrag vom 4. Feb 2024
Antwort Antwort
VoSs2o0o

Registriert seit: 23. Jan 2024
9 Beiträge
 
#1

Unterschiedliche Ergebnisse beim kompilieren, und Ursache

  Alt 3. Feb 2024, 01:30
Ich hatte vor kurzen ein Problem gelöst, welches mich längere Zeit ratlos gemacht hatte:

Ich habe ein Projekt kompiliert, und folgende Ergebnisse erhalten:

interner Compiler: 30MB
externer Compiler: 60MB
intern via CLI: 28MB
MSBuild: 60MB

Aus irgendwelchen Gründen waren die Ergebnisse unterschiedlich und ich habe recherchiert. Im Projekt ist JCLDebug integriert, das Plugin modifiziert das Kompilat. Als ich das per Kommandozeile nachgeholt hatte, sind die Dateien noch größer geworden (erwartbar). Über ein Diff habe ich gesehen, das sind irgendwelche anderen Debugger-Daten die integriert wurden. Die schienen aber keine Verwendung zu haben. Ich habe im nächsten Schritt alle Debugginginfos in der IDE abgeschaltet: ohne Erfolg, die Dateien blieben so groß obwohl das Debugging mit JCLDebug nicht mehr funktioniert (jedenfalls ohne Map/jdbg Datei im Verzeichnis). ich habe nochmal alles untersucht, und dabei ist mir eine alte cfg-Datei aufgefallen. Ich wusste, das das Compiler-Infos sind, ich dachte aber das diese Datei vor MSBuild-Zeiten verwendet wurde, und praktisch keinen Nutzen mehr hat.
Aber ein löschen der Datei brachte sofort das gewünschte Kompilat, und ich habe folgendes herrausgefunden: Es war hier ein Schalter für TDS-Debug-Symbolen angeschaltet, welcher den Mehrinhalt verursachte.

Also die Compilerschalter kann man in der Source, in den Optionen (somit in der DProj) und auch in besagter cfg setzen. Letztere wird aber nur vom externen Compiler/MSBuild ausgewertet. IDE-Plugins sollte man in diesem Zusammenhang auch argwöhnisch betrachten, die werden ja von externen Compilern nicht beachtet

Mein Problem ist gelöst, aber zwei Fragen bleiben noch:
-Ich dachte TDS funktioniert gar nicht mit 64-Bit Kompilaten (und das ist eins)
-TDS ist doch eigentlich separiert, und nicht in die exe integriert - so dachte ich bißher

Ich hoffe mit den Infos jemanden weitergeholfen zu haben, und vielleicht kann ja hier jemand die letzten beiden Fragen beantworten.

Ich habe die Story etwas ausführlicher auf meiner Homepage hinterlegt:
https://www.cloud-9.de/entwicklung/u...ren-mit-delphi
Delphi Themen auf meiner Homepage: https://www.cloud-9.de/component/tags/tag/43-delphi

Geändert von VoSs2o0o ( 3. Feb 2024 um 01:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Unterschiedliche Ergebnisse beim kompilieren, und Ursache

  Alt 3. Feb 2024, 01:50
Der externe Compiler ist MSBuild.

MSBuild ruft letztendlich auch nur den DCC (CLI) auf.

Wie rufst du das CLI auf? (Parameter bzw. cfg-Datei)
Vergleich das mal mit der Kommandozeile des DCC, welcher vom Delphi/MSBuild ausgeführt wird.

Ist das ein upgegradetes Projekt (DPROJ) von einem alten Delphi?


TDS aka TurboDebuggerInfos können extern, aber auch intern sein.
Egal ob extern oder intern, es ist eine Section in einer PE-Datei (EXE/DLL/BPL).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Feb 2024 um 01:54 Uhr)
  Mit Zitat antworten Zitat
VoSs2o0o

Registriert seit: 23. Jan 2024
9 Beiträge
 
#3

AW: Unterschiedliche Ergebnisse beim kompilieren, und Ursache

  Alt 4. Feb 2024, 17:11
Zitat:
Der externe Compiler ist MSBuild.
Ja, weil das so in den Optionen von Delphi steht, und Nein, denn MSBuild ist nicht der Compiler, sondern das Build-Tool, welches den Compiler DCC32/DCC64 verwendet.
Ich meinte oben den "echten" Compiler, also DCC64. Sorry für die missverständliche Ausdrucksweise, kann es aber oben nicht mehr bearbeiten

Zitat:
MSBuild ruft letztendlich auch nur den DCC (CLI) auf.
Richtig, deshalb sind die Ergebnisse DCC/MSBuild in meinem Falle auch gleich (Muss aber nicht, MSBuild würde aber noch weitere Aufgaben erledigen)

Zitat:
Wie rufst du das CLI auf? (Parameter bzw. cfg-Datei)
Vergleich das mal mit der Kommandozeile des DCC, welcher vom Delphi/MSBuild ausgeführt wird.
Ich hatte Copy und Paste verwendet, und exakt die Kommandozeilenbefehle des Meldungsfensters der IDE übernommen. Herrausgekommen ist das abweichende Ergebnis.
Und wie oben bereits geschrieben: die "IDE Build Chain", welche nicht MSBuild ist, ignoriert die cfg und
DCC32/DCC64 unterstützt natürlich auch keine IDE-Plugins. Und schreibt dazu aber auch nichts ins Meldungsfenster...

Zitat:
Ist das ein upgegradetes Projekt (DPROJ) von einem alten Delphi?
Ja, es wurde vermutlich ursprünglich Delphi 7 geschrieben. Die cfg enthielt viele Standardeinstellungen, und auch ein paar mir nicht bekannte Compilerschalter (nicht dokumentiert, oder bereits veraltet). Die Ursprünge des Projektes reichen aber viel weiter zurück (Rewrite aus einer anderen Sprache)

Zitat:
TDS aka TurboDebuggerInfos können extern, aber auch intern sein.
Egal ob extern oder intern, es ist eine Section in einer PE-Datei (EXE/DLL/BPL).
Also die Infos das es nur als separate TDS-Datei und nur mit 32bit geht, habe ich aus Wiki von Embarcadero.
(Geht grad mal wieder nicht, sonst hätte ich es hier verlinkt)

Wenn ich in der Oberfläche mal in die Linker-Optionen gehe und 64bit auswähle dann wird die TDS-Option ausgeblendet. Also auch die Oberfläche sagt, das geht nicht mit 64Bit.
DCC fügt also scheinbar nicht brauchbare Daten ein, wenn man es Ihm per Kommandozeile/cfg befiehlt.

Ich sehe auch nur eine "TDS"-Option in den Einstellungen, und die erzeugt eine separate Datei... '(Ich gehe mal davon aus, das du die mit intern/extern separat/integriert meintest)
Delphi Themen auf meiner Homepage: https://www.cloud-9.de/component/tags/tag/43-delphi

Geändert von VoSs2o0o ( 5. Feb 2024 um 00:17 Uhr)
  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 17:50 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