Compiler string
-
Wenn ich eine normale Datei erstelle und statisch linke dann importiert der Visual C++ Compiler anscheinend noch ein haufen Strings in meine .exe?
Habe aus langeweile mal OllyDbg angeschmissen und nach Textstrings gesucht, da steht nen haufen zeugs bei was keiner brauch. Unter underem auch der Pfad wo das Projekt letztendlich auf meiner Festplatte lag.
"string to long" oder solche Sachen kommen wohl aus der STL oder so, aber kann ich das einstellen das der nicht son haufen Unsinn importiert?
-
Tatsächlich bettet der Linker den Pfad zur PDB-Datei in die erstellte EXE-
bzw. DLL-Datei ein.http://msdn.microsoft.com/de-de/library/yd4f8bd1(v=vs.100).aspx
Da die PDB-Dateien dem Kunden vermutlich nicht vorliegen wäre es sinnvoll
die Pfade nicht als lesbaren Text in der exe zu lassen ...(Visual Studio 2008)
Projekteigenschaften > Build > Advanced > Debug Info: "none"(Visual Studio 2010)
Projekteigenschaften > Linker > Debuggen > Debuginfo generieren > NEIN
-
Wenn der Linker den String braucht, weil er über irgend eine Referenz einen Verweis auf ein Stück Code benötigt, der auch irgendwo diesen string (z.B. in einer Exception) benötigt, wirst Du das nicht verhindern können.
Die Libraries sind heute so kompliziert und verschachtelt, dass solcher teilweise "toter Code", nicht zu vermeiden ist.
Grundstzfrage: Was ärgert Dich daran?
Man gewinnt keinen Schönheitspreis für eine "saubere Binary"@merano: Und was soll das entfernen des Pfades bringen. Es macht nur das debuggen eines Dumps schwierig.
-
Martin Richter schrieb:
Grundstzfrage: Was ärgert Dich daran?
Man gewinnt keinen Schönheitspreis für eine "saubere Binary"@merano: Und was soll das entfernen des Pfades bringen. Es macht nur das debuggen eines Dumps schwierig.
Zum einen ist es nicht akzeptabel das Daten aus der Entwicklungsumgebung sich
per default in einer Release Version befinden.Zum debuggen gibt es die Debug-Version. Als Feature macht es auch in der Release-Version Sinn - Gottseidank abschaltbar.
Was nützt im übrigen der Pfad wenn die zugehörigen Dateien nicht ausgeliefert
werden - naja ausser das sich der Start der exe verzögert ?Es ist wohl so, das sich die Applikation beim Kunden anders verhält als auf dem
Rechner des Entwicklers. Nicht so gut.Ausserdem wird die PDP-Datei ohnehin im aktuellen Verzeichnis noch gesucht, der
Pfad ist also definitiv nicht notwendig.
-
1. Das Laden der DLL verzögert sich? Das ist wohl ein Witz! Wegen 60-256 bytes?
2. Der Name der PDB Datei muss nicht identishc mit der der EXE/DLL sein. Also macht der Link einen Sinn.
3. Auch eine Release Version wird bei uns immer mit Debug-Infos erzeugt. Das hat aber nur Auswirkungen auf die Erzeugung ener PDB Datei.
4. Zum Debuggen muss man manchmal auch die Release Version nehmen, dnen es gibt genügend Fehler, die nur in einem Release Build auftreten können!
Crash-Dumps habe ich schon erwähnt.
5. Eine PDB Datei wird nicht gesucht, wenn kein PDB Datei link in der EXE/DLL vorhanden ist!
-
Hallo Martin
Ich vermute das du etwas "zu schnell" gelesen hast ?
Martin Richter schrieb:
1. Das Laden der DLL verzögert sich? Das ist wohl ein Witz! Wegen 60-256 bytes?
Von DLLs war doch garnicht die Rede ?
Die PDP Datei ist immer deutlich grösser ...
Die PDP wird ja vermutlich auch nur von der IDE geladen. Nicht von der exe
selbst, oder doch ? Wenn ich sie nicht mitliefere ...Martin Richter schrieb:
2. Der Name der PDB Datei muss nicht identishc mit der der EXE/DLL sein. Also macht der Link einen Sinn.
OK. Also macht der Pfad dann Sinn.
Martin Richter schrieb:
3. Auch eine Release Version wird bei uns immer mit Debug-Infos erzeugt. Das hat aber nur Auswirkungen auf die Erzeugung ener PDB Datei.
Und auf lesbare Projektpfade in der exe ...
Martin Richter schrieb:
4. Zum Debuggen muss man manchmal auch die Release Version nehmen, dnen es gibt genügend Fehler, die nur in einem Release Build auftreten können!
Crash-Dumps habe ich schon erwähnt.
5. Eine PDB Datei wird nicht gesucht, wenn kein PDB Datei link in der EXE/DLL vorhanden ist!Das hatte ich auch so geschrieben! (Stichwort: Feature)
Von der ürspünglichen Frage bliebe eventuell noch offen wie man nicht benötigte
Strings noch loswerden könnte ...