也許有人可以告訴我如何從我的Visual Studio 2003編譯的C++應用程序中刪除調試符號?我將它編譯爲「發佈」,這些符號是否已經刪除,還是仍然存在?如果他們這樣做,我怎麼能刪除他們?在Visual C++ 2003中刪除調試符號
謝謝!
也許有人可以告訴我如何從我的Visual Studio 2003編譯的C++應用程序中刪除調試符號?我將它編譯爲「發佈」,這些符號是否已經刪除,還是仍然存在?如果他們這樣做,我怎麼能刪除他們?在Visual C++ 2003中刪除調試符號
謝謝!
是,一旦你在釋放模式編譯然後調試符號已經被移除。
將調試符號添加到二進制文件會增加二進制文件的大小,因爲它是程序運行所需的附加信息。在調試模式下,這些符號會添加到二進制文件中,因爲該程序正在開發中,因此可能需要但是,在發佈模式下,二進制文件的大小應儘可能小(因爲開發已經完成),因此,一旦選擇了發佈模式,這些額外的調試信息就已經被刪除。
據我所知,所有調試信息存儲在.pdb文件。在.exe中,只有這個.pdb文件的名稱,僅此而已。做一個實驗並親自看看。在有和沒有調試信息的情況下構建發行版,並比較差異(當然,不要更改任何其他選項)。文件應該幾乎相同。沒有理由從發佈版本中排除調試信息,並且有足夠的理由來包含它。
該實驗的目的是發現構建時有無調試信息時的差異。這在發佈版本中非常重要。所有其他編譯器選項在進行此實驗時應保持不變。 – Dialecticus
我誤解爲構建調試和發佈並比較差異。 –
我刪除了提到的調試版本,使其更清晰。無論如何,調試版本與這個故事無關。 – Dialecticus
使用調試信息設置來控制您在哪裏如何生成調試符號,但此信息是否保存在對象(.OBJ)文件或程序數據庫(PDB)。 請參閱MSDN中的/Z7, /Zi, /ZI (Debug Information Format)。
在PDB數據庫中正確生成調試符號不應該影響你的程序的性能。參見約翰·羅賓斯的博客Do PDB Files Affect Performance?
好的,謝謝! – Omegavirus