我很想將調試信息包含在發佈給客戶的發佈版本中。據我所見,唯一不利的方面是二進制文件大小增加25%。優點是我可以立即獲得可用的故障轉儲,更容易分析。 我願意接受25%的增長。我還有其他缺點嗎?Visual Studio:在發佈版本中調試信息
這是一個C項目和所有我想要做的就是鏈接/調試/生成調試信息
我很想將調試信息包含在發佈給客戶的發佈版本中。據我所見,唯一不利的方面是二進制文件大小增加25%。優點是我可以立即獲得可用的故障轉儲,更容易分析。 我願意接受25%的增長。我還有其他缺點嗎?Visual Studio:在發佈版本中調試信息
這是一個C項目和所有我想要做的就是鏈接/調試/生成調試信息
可執行文件的大小應該增加遠遠少於25%。
我其實有點驚訝,它增加了很多,但一些快速測試表明,至少有一個大型示例項目(ScummVM)將.exe從10,205,184字節增加到10,996,224字節,只需將/DEBUG
選項添加到鏈接步驟(大約增加8%)。 /DEBUG
是使用IDE中的"Linker | Debugging | Generate Debug Info"
選項指定的。請注意,此設置應該對編譯器生成的優化沒有影響。
我知道指向.pdb文件的指針放在可執行文件中,但沒有太多。我嘗試了一下,發現啓用/OPT:NOREF
鏈接器選項將大小差異更改爲10,205,184與10,205,696。所以非/DEBUG
構建保持相同的大小,但/DEBUG
構建下降到只有512個字節更大(這可以由指針指向.pdb - 可能鏈接器輪到512的幾倍)。遠遠低於1%的增長。顯然,加入/DEBUG
會導致鏈接器保留未引用的對象,除非您還指定/OPT:NOREF
。 (IDE中的"Linker | Optimization | References"
選項)。
程序運行正常,沒有.pdb文件 - 如果您想在客戶站點提供更好的調試體驗,您可以選擇將其發送給客戶。如果您只想獲得體面的堆棧跟蹤,則不需要在客戶機器上具有.pdb文件 - 它們(或您提供的某些工具/功能)可以發送轉儲文件,該文件可以加載到調試器在您的站點提供.pdb文件並獲取相同的堆棧跟蹤信息port-mortem。
當然要注意的一件事是,您需要將.pdb文件與您的發行版一起歸檔。 「用於Windows的調試工具」包(現在分發在Windows SDK中)提供了一個符號服務器工具,因此您可以將.pdbs歸檔並輕鬆檢索它們以進行調試。
我可以考慮分發.pdb文件的唯一缺點是它可以使您的應用程序更容易逆向工程,如果這是您的擔憂。請注意,Microsoft爲Windows分發符號(使用公共符號服務器 - 以及某些特定版本的完整符號集的包)。但是,他們分發的符號會通過消毒步驟進行,消除他們認爲敏感的某些項目。您可以使用鏈接器的/PDBSTRIPPED
選項(IDE中的"Linker | Debugging | Strip Private Symbols"
)執行相同的操作(或類似操作)。有關選項刪除的詳細信息,請參閱the MSDN docs。如果您要分發符號,則可能適合使用該選項。
我總是發出調試版本,從未發佈版本。我想不出有什麼不利之處,其優點就像你提到的那樣。
你沒有提到你在用什麼語言,C++和C#可能有不同的答案。
我不是100%確定你正在考慮做什麼改變。你打算告訴Visual Studio進行標準的Debug編譯,併發布它,還是要在Release編輯中編輯幾個設置?在發佈版本中仔細修改一些設置可以讓我成爲最好的方法。無論結果如何,我都會確保開啓優化功能,因爲這可以使編譯代碼的性能發生顯着變化。
我已經用請求的說明更新了這個問題。 – 2011-06-15 21:06:45
但其他問題是...我如何確保優化仍在?我的意思是,它們已啓用,但如果「生成調試信息」會覆蓋設置並禁用它們,該怎麼辦? – 2011-06-15 21:07:42
如果您使用的是C單元,則此設置位於Configuration Properties :: C/C++ :: Optimization下的項目的Property Pages中。我相信這些默認值是針對調試版本的優化禁用(/ Od),以及用於版本構建的最大化速度(/ O2)。 – 2011-06-15 21:15:28
據當時http://msdn.microsoft.com/en-us/library/xe4t6fc1(v=vs.80).aspx VS2005的文檔:
/DEBUG更改默認值從REF到NOICF(所以/ OPT選項NOREF和 從ICF,您將需要明確指定/ OPT: REF或 /OPT:ICF)。
我我的情況下,當我同時啓用它幫助:
/O2 /DEBUG /OPT:REF /OPT:ICF
顯然,SCUMVM有很少的未引用代碼:)在啓用剝離未引用符號後,可執行文件大小恢復正常。非常感謝你! – 2011-06-16 01:15:43
感謝您指出鏈接器參考 – Gob00st 2012-12-15 17:08:01