2013-12-10 12 views
10

Ho lavorato a un progetto Big C++, che ha un'enorme fonte di dimensioni di quasi 300 MB e più di 800 file. Voglio ottenere lo stack delle chiamate quando il binario si blocca, quindi ho catturato il segnale e scritto lo stack delle chiamate da backtrace_symbols a un file. Ma per ottenere i nomi dei simboli da backtrace_symbols, ho compilato con il flag del linker '-radodinamica'. Voglio sapere che, usando '-rdynamic', si verificano problemi ..?Impatto/svantaggi dell'opzione rdynamic gcc

So che influisce sulle prestazioni, Will adding the -rdynamic linker option to gcc/g++ impact performance?

Ma ha influisce sulle prestazioni notevolmente ..?

Espone il mio codice sorgente ..? [So che non lo farà, voglio solo essere sicuro]

Influisce sulle prestazioni di runtime totali o sul tempo di avvio ..?

Quali sono gli svantaggi di 'rdynamic' ..?

risposta

11

Q: Ma influisce notevolmente sulle prestazioni ..?

A: L'ho usato su un progetto più grande senza alcun degrado.

Q: Espone il mio codice sorgente ..?

A: No, mostra solo i nomi delle funzioni.

D: Influisce sulle prestazioni runtime totali o sul tempo di avvio ..?

A: Nella mia esperienza, no. La maggior parte delle funzioni sono già state esportate. Di solito questo aggiunge le funzioni statiche.

D: Quali sono gli svantaggi di 'rdynamic' ..?

A: rdynamic può essere utilizzato con dlopen() per avere una tabella di simboli condivisa/globale per l'eseguibile che era un must nel mio progetto (dynamic_cast <> funzionerà oltre i confini SO). Lo svantaggio è la collisione del nome della funzione tra SO.