Ich habe einen C-Code, der für Linux ausführbar ist.
Zur Veröffentlichung kann ich zwei Optionen haben:
Man baut mit -g -O3, entfernt das debug (strip -g) und sendet die Ausgabe als Release. Zweitens ist das Release direkt mit -O3 zu erstellen.
Der Vorteil der ersten Option, wenn ich richtig verstehe, ist, dass ich die Exe vor dem Strippen für das Remote-Debugging oder für die Analyse von Core-Dumps verwenden kann.
Die Frage ist, ob es irgendwelche Nachteile in diesem Ansatz gibt, z. B. gibt es Laufzeit-Leistungs-Overhead des Aufbaus mit -g und dann Abstreifen
danke.
Es wurde keine Laufzeitleistung für die Verwendung von -g
gefunden. Die Debug-Info befindet sich in einem separaten Abschnitt der ausführbaren Datei, die nicht einmal geladen wird, wenn Sie die Datei ausführen.
Aber Sie können Debug-Informationen und ausführbare Dateien trennen, wenn Sie möchten (was immer noch keinen Leistungsunterschied ergibt). Mein Gentoo Linux handhabt es auf diese Weise. Der Grund ist einfach die Minimierung des belegten Speicherplatzes, der es mir ermöglicht, alle Binärdateien auf einer kleinen, schnellen Festplatte zu speichern, während die Debug-Informationen, die selten benutzt werden, in einer separaten Partition gespeichert werden.
%Vor%Jetzt haben Sie eine foo ausführbare Datei und einen foo.debug, der Debug-Symbole enthält.