.NET中Debug模式與Release模式


  Visual Studio 項目對程序的發布和調試版本分別有單獨的配置。顧名思義,生成調試版本的目的是用於調試,而生成發布版本的目的是用於版本的最終分發。
  如果在 Visual Studio 中創建程序,Visual Studio 將自動創建這些配置並設置適當的默認選項和其他設置。在默認設置下:

  • 程序的“調試”配置用全部符號調試信息編譯,不進行優化。(優化會使調試復雜化,因為源代碼和生成的指令間的關系更加復雜。)
  • 程序的“發布”配置被完全優化,不包含任何符號調試信息。調試信息可在單獨的 PDB 文件中生成。

  當在程序集的屬性頁中選Debug模式時,配置如下:

 Debug


 本文地址:http://www.cnblogs.com/Interkey/p/3554588.html

  當選擇Release模式時,配置如下:

 Release

  兩者的不同點如下:

 

項目 Debug Release
條件編譯常數 Debug;Trace Trace
優化代碼 False True
輸出路徑 bin\Debug bin\Release
生成調試信息 True False

Debug模式下生成的程序集為調試版本,未經優化;在bin\debug\目錄中有兩個文件,除了要生成的.exe或.dll文件外,還有個.pdb文件,這個.pdb文件中就記錄了代碼中的斷點等調試信息;

Release模式下不包含調試信息,並對代碼進行了優化,\bin\release\目錄下只有一個.exe或.dll文件。

  注意: 若要更改項目的生成模式,不能只從項目屬性頁上點“配置”下拉框更改,那樣不起作用,必須點右上角的“配置管理器”按鈕才能更改。

另外,在項目文件夾下除了bin外,還有個obj目錄,由於編譯是分模塊編譯的,每個模塊的編譯結果就保存在了obj目錄下。最后會合並為一個exe或者dll文件保存到bin之中。因為每次編譯都是增量編譯,也就是只重新編譯改變了的模塊,所以這個obj的目錄的作用就是保存這些小塊的編譯結果,加快編譯速度。

以上內容整理自:VS.Net中程序集的Debug版本和Release版本的區別.

更多可參考:判斷dll是debug還是release,這是個問題

 


 

然后就是關於pdb文件:
程序數據庫 (PDB) 文件保存着調試和項目狀態信息,使用這些信息可以對程序的調試配置進行增量鏈接。 在使用 /debug 生成時,會創建一個 PDB 文件。 可以使用 /debug:full 或 /debug:pdbonly 生成應用程序。 使用 /debug:full 生成將產生可調試的代碼。 使用 /debug:pdbonly 生成將產生 PDB,但是不會產生通知 JIT 編譯器調試信息可用的 DebuggableAttribute。 如果您想為不希望其成為可調試的發布版本生成 PDB,請使用 /debug:pdbonly。 有關更多信息,請參見 /debug (C# 編譯器選項)或 /debug (Visual Basic)。

本文地址:http://www.cnblogs.com/Interkey/p/3554588.html

問:Debug里有pdb,Release里也有pdb,他們有什么不同呢?為什么很多人都不喜歡pdb,欲除之而后快?

答:Debug里的pdb是full,保存着調試和項目狀態信息、有斷言、堆棧檢查等代碼。Release 里的pdb是pdb-only,基本上:出什么錯了+錯誤在哪行。


因為很多人把pdb理解成:調試文件、Program Debug Database、會泄露代碼機密,所以想將其刪除,那只要在VS的 項目-->生成-->高級-->調試信息-->None便可.

RemovePdb

  重要事項: 調試器只會為二進制文件加載與該二進制文件生成之時所創建的 PDB 完全相符的 PDB。 就是說,該 PDB 必須是原 PDB 或其副本。 因為編譯器在創建二進制文件時會考慮多種因素,所以,即使代碼自身沒有變化,二進制文件的實際布局也可能會有變化。

 以上內容整理自:.net里Release的pdb文件有什么用

本文僅為個人需要而整理,內容層次不一,望自斟酌!

擴展Determining if a .NET Assembly is compiled debug or not

快速判斷可通過.NET Reflector,參考區分.net dll編譯時是Debug的還是Release的

如何知道dll文件是面向32位系統還是面向64位系統的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM