2012-08-14 51 views
1

是否可以在回溯中禁用源代碼視圖,僅顯示行號和文件名?GDB - 在回溯中禁用源視圖

我的意思是不包括這些信息給應用程序,因爲你也可以從應用程序文件中讀取。

我不想讓任何人看到我的源代碼。

如果在GDB中是不可能的,是否還有其他調試器具有這種功能?

+1

不是最好的主意。試圖隱藏源代碼的人通常或者a)對安全性感到困惑,或者b)被代碼困窘。 – 2012-08-14 12:17:44

回答

2

GDB只能顯示你的源代碼,如果它能找到你的原始源文件。如果人們可以在回溯中看到你的源代碼,那麼他們也可以看到你的全部源代碼。

因此,我懷疑你的意思是你不希望編譯器在應用程序二進制文件中包含任何源代碼?

實際上,應用程序二進制文件只包含源文件名,行號,符號名稱(如函數和變量名稱)以及一些類型信息。如果您使用-g3,那麼它們可能還包含預處理器宏,但大多數人只使用-g

排除「來源」信息的最簡單方法是用而不是發送帶有調試信息的二進制文件。您可以首先在不使用-g的情況下構建它,也可以使用strip在事後刪除它。

不使用調試信息構建會刪除所有不是絕對必要的符號名稱(包括static函數和所有局部變量名稱),但它不會刪除外部可見函數的符號名稱:鏈接器需要查看這些符號名稱。 strip可以刪除一些也,我想,雖然我從來沒有嘗試過。請注意,庫必須具有用於外部可見功能的符號名稱。

刪除調試信息也將刪除行號信息和源文件名,所以這仍然不是你想要的。

我建議a)重構您的源代碼,以免尷尬和/或放棄任何線索,並且b)不附帶調試信息。