2015-05-02 20 views
12

Penso che gc include le informazioni di debug per impostazione predefinita. Tuttavia, voglio evitare la decompilazione.Evita il debug di informazioni su golang

Come posso rimuovere le informazioni di debug durante la compilazione del codice go con gc?

Nota: L'utilizzo di gccgo non risolve il problema. Se non compilo con solo le uscite '-g' l'eseguibile è rotto e:

senza informazioni di debug in ELF errno eseguibile -1 errore fatale: senza informazioni di debug in eseguibile ELF

pila di esecuzione: senza informazioni di debug in ELF errno eseguibile -1 panico durante panico"

risposta

9

Il linker Go ha una bandiera -w che disabilita NANO debug generazione di informazioni È possibile fornire le bandiere linker andare strumento di costruire comandi come segue:.

go build -ldflags '-w' 

Un altro approccio su piattaforme Linux/Unix sta utilizzando il comando strip contro il binario compilato. Questo sembra produrre file binari più piccoli rispetto alla precedente opzione linker.

+1

Ho forzato il panico e la traccia dello stack mostrava chiaramente i nomi delle funzioni e i numeri di riga utilizzando entrambe le soluzioni: S – dv1729

+3

Qualsiasi informazione che il runtime Go richieda rimane ancora nel file binario. Ciò include le informazioni richieste per i messaggi di panico, le informazioni sul tipo, ecc. Non sono a conoscenza di alcun modo per estrapolarlo. Questo è diverso dalle informazioni di debug puro. – snap

+6

La striscia non è raccomandata dal Go Team, potrebbe interrompere l'eseguibile. È meglio usare 'go build -ldflags '-s'' per omettere la tabella dei simboli, tuttavia non sono sicuro che sia possibile nascondere completamente ogni nome di simbolo. – siritinga

Problemi correlati