2011-04-06 40 views
2

我試圖找到一種方法來調試從我的軟件發佈的版本(使用gcc編譯的C++代碼)發送給我的核心文件。理想情況下,我希望能夠部署發佈版本,並保持調試版本用於調試,所以我有符號表等。爲發佈的軟件調試C++核心文件

我的問題是(據我瞭解)調試和發佈版本不能保證是相同的 - 所以當我啓動gdb並指向我的調試可執行文件時,來自該字段的核心文件可能看起來像垃圾。

有沒有辦法解決這個問題(這裏有個問題),而不影響我發佈的軟件的大小和性能?這是一個很大的應用程序,調試版本的性能可能不被客戶接受。我已經看過建立一次(調試)的建議,然後去掉符號表並將其作爲發佈版本發佈,但是我將看到用這種方法實現的性能,不是嗎?

有沒有人有他們已經嘗試或目前使用該地址解決這個問題的建議? 謝謝!

回答

3

您可以編譯和鏈接優化打開並仍然生成調試符號(-O3 -g),然後提取調試符號。這樣你就可以得到調試符號,但可以在沒有它們的情況下發貨,並且不會有性能損失或其他問題。有關如何做到這一點,請參閱How to generate gcc debug symbol outside the build target?

+0

謝謝,我想這就是我要找的。開啓優化功能後,由於內聯等問題,我可能仍然會遇到調試問題,但它總比沒有好,對嗎? 也作爲後續,如果我用-g編譯,還有-s,那麼這兩個選項是否有效地相互抵消,或者不會刪除用-g添加的所有內容? – ndtrek07 2011-04-08 17:29:39

+0

@ ndtrek07:好問題,我認爲'-s'確實會取消'-g',因爲它會顯示「字符串不必要的符號」,並且包含調試符號。 – DarkDust 2011-04-08 17:55:29