2009-04-09 72 views

回答

0

我的理解主要區別在於,在調試模式下,調試器使用的整個符號信息與程序一起存儲,所以如果開發人員想在調試之前調試應用程序,他/她可能會所以,通過附加到任何調試器。

您可能已經注意到debug文件夾中的.pdb文件。此外,可執行文件的大小也相當大。然而,在釋放模式下,調試器符號信息被省略,假設最終用戶將要使用該應用程序,所以他不能被提供應用程序符號。

您可以將符號視爲提供給調試器的信息,以瞭解本地變量,哪些函數,哪些斷點被設置以及各種信息,以便它可以準確地告訴您當前正在執行哪部分代碼。

+0

這是不正確的 - 調試符號可以在調試和發佈模式。 – morechilli 2009-04-09 11:49:07

6

一個簡短的答案是建立在「釋放」模式的代碼的速度或大小進行優化,也將用於調試的所有信息刪除

0

對,沒錯,你可以在釋放模式甚至調試[: )]。有精心製作的程序來做到這一點。

但是,發佈版本針對速度和性能進行了優化。此外,Microsoft最終用戶許可協議聲明,您不能在客戶端系統上部署您的調試文件。

http://www.codeproject.com/KB/debug/releasemode.aspx

5

差異:

  • 調試插入有用CIL代碼之間的NOP(無操作CPU指令),以便允許調試器附着
  • 調試不允許各種優化:
    • 內聯(放置一個方法的代碼來代替對它的調用以減少調用開銷)
    • 循環展開(更換循環代碼 - 諸如用於 - 與重複的代碼,以消除環路開銷(循環變量維修))

和許多其他。發佈速度明顯更快,但它不提供真正的調試支持。對於調試有...調試模式:)

相關問題