2015-05-02 4 views
12

Ich denke, dass GC Debugging-Informationen standardmäßig enthält. Ich möchte jedoch die Dekompilierung vermeiden.Vermeiden Sie Debugging-Informationen auf Golang

Wie kann ich die Debugging-Informationen beim Kompilieren von Go-Code mit GC entfernen?

Hinweis: Die Verwendung von gccgo löst das Problem nicht. Wenn ich nicht kompilieren mit ‚-g‘ die ausführbare Datei defekt ist und nur Ausgänge:

keine Debug-Informationen in ELF ausführbare errno -1 fatalen Fehler: keine Debug-Informationen in ELF ausführbare

Laufzeitstapel: keine Debug-Informationen in ELF ausführbare errno -1 Panik während Panik“

Antwort

9

Der go-Linker ein Flag -w hat, die Debug-Informationen Generation ZWERG deaktiviert Sie Linker-Flags liefern gehen Tool Befehle bauen wie folgt:.

go build -ldflags '-w' 

Ein anderer Ansatz auf Linux/Unix-Plattformen ist die Verwendung des Befehls strip gegen die kompilierte Binärdatei. Dies scheint kleinere Binärdateien als die obige Linkeroption zu erzeugen.

+1

Ich erzwang eine Panik und der Stack-Trace deutlich Funktionsnamen und Zeilennummern mit beiden Lösungen angezeigt: S – dv1729

+3

Alle Informationen, die die Go-Laufzeit benötigt, bleibt immer noch in der Binärdatei. Dazu gehören Informationen, die für Panic-Nachrichten, Typinformationen usw. benötigt werden. Ich bin mir nicht bewusst, wie ich sie entfernen kann. Dies unterscheidet sich von reinen Debugging-Informationen. – snap

+6

Strip wird vom Go-Team nicht empfohlen, es kann die ausführbare Datei beschädigen. Es ist besser, 'go build -ldflags '-s' zu verwenden, um die Symboltabelle wegzulassen, aber ich bin mir nicht sicher, ob Sie jeden Symbolnamen vollständig verbergen können. – siritinga