2013-12-10 45 views
10

我一直在一個Big C++項目中工作,該項目有一個巨大的來源,大小接近300 MB,超過800個文件。當二進制崩潰時,我希望獲得調用堆棧,所以我已經捕獲了Signal並將來自backtrace_symbols的調用堆棧寫入文件。但爲了從backtrace_symbols獲取符號名稱,我已經使用鏈接器標誌「-rdynamic」進行了編譯。我想知道,使用'-rdynamic'會影響任何問題..?rdynamic gcc選項的影響/缺點

我知道這會影響性能, Will adding the -rdynamic linker option to gcc/g++ impact performance?

但它 大大影響性能..?

它是否暴露我的源代碼..? [我知道它不會,我只想確定]

它會影響總體運行時性能或啓動時間。

'rdynamic'有什麼缺點?

回答

11

問:但是會影響性能嗎?答:我已經在一個較大的項目上使用它,而不會有任何退化。

問:它是否公開我的源代碼..? A:不,它只是公開函數名稱。

問:它會影響總體運行時性能或啓動時間嗎?

答:以我的經驗,沒有。大多數功能已經導出。通常這會添加靜態函數。

問:'rdynamic'有什麼缺點?

答:rdynamic可以與dlopen()一起使用,以爲我的項目中必備的可執行文件提供一個共享/全局符號表(dynamic_cast <>將在SO邊界上工作)。缺點是SO之間的函數名稱衝突。