国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.NET中Debug模式與Release模式

2019-11-14 16:50:54
字體:
來源:轉載
供稿:網友

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

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

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

 Debug


 本文地址:http://www.survivalescaperooms.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.survivalescaperooms.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位系統的


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 历史| 郴州市| 洛隆县| 溧阳市| 五指山市| 剑阁县| 筠连县| 托克托县| 古丈县| 扶余县| 南华县| 大宁县| 集贤县| 富阳市| 阿坝| 林芝县| 秭归县| 瑞安市| 尖扎县| 仁化县| 桓台县| 金塔县| 松溪县| 昂仁县| 松原市| 奉化市| 沈阳市| 佛山市| 古田县| 吴江市| 屯留县| 图片| 聂拉木县| 云梦县| 静安区| 昌平区| 绥芬河市| 和平县| 宜君县| 阿克苏市| 娄底市|