程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Visual Studio中Debug和Release的區別,studiodebug

Visual Studio中Debug和Release的區別,studiodebug

編輯:C#入門知識

Visual Studio中Debug和Release的區別,studiodebug


在Visual Studio中,生成應用程序的時候有2種模式:Debug和Release。兩者之間如何取捨呢?


假設有這麼簡單的一段代碼,在主程序中調用方法M1,M1方法調用M2方法,M2方法調用M3方法,M3方法中拋出異常。

    class Program
    {
        static void Main(string[] args)
        {
            M1();
            Console.ReadKey();
        }
        static void M1()
        {
            M2();
        }
        static void M2()
        {
            M3();
        }
        static void M3()
        {
            throw new Exception("error");
        }
    }

選擇"Debug"模式,把斷點打在Console.ReadKey();代碼行。運行,並通過依次點擊"調試→窗口→調用堆棧",顯示"調用堆棧"窗口信息,如下:

 

選擇"Release"模式,再調試,顯示如下:

 

從堆棧信息可以看出:在Debug模式和Release模式下調試,Debug模式消耗更多的內存,所以運行較慢;而Release模式作了一些優化,消耗較少的內存,所以運行更快。

 

在實際情況中,應該把在Release模式下生成的應用程序部署到服務器上,因為Remease下生成的應用程序作了優化處理,相對Debug下生成的應用程序,運行更快。

 

另外,如果我們想讓一段代碼只在Debug模式下運行,可以使用Debug標記這樣寫:

#if DEBUG
 Console.WriteLine(DateTime.Now);
#endif

 

總的來說:
1、Release模式相比Debug模式,做了更多的優化,更適合在項目完成後部署到服務器上。而Debug模式更適合在調試的時候使用。
2、使用Debug標記的代碼,在Release模式下會被自動刪除。


visual studio2005 debug與release的結果不一樣

“直接F5生成的release 結果是對的 但是我關掉以後從文件夾打開,結果又不對了 ”
這主要是你的應用程序運行過程需要加載一系列的動態鏈接庫(DLL),在VS環境中,已經設置了一些搜索路徑,所以調試時可以找到他們。而你在文件夾雙擊的時候,如果程序需要某DLL,就會在當前目錄、系統目錄查找,如果都找不到的話,自然無法運行了^_^

通常有2類解決方法:
一、 動態鏈接MFC庫,將DLL一同發布出去
1.1 手工方法
通過VS的命令提示符環境中的dumpbin.exe查看你的主輸出文件(××.exe)運行依賴於哪些DLL,手工把他們找出來,和你的exe放在同一個目錄下,轉移到其他機器的時候整個目錄拷貝過去。
1.2 使用安裝工具
最便捷的就是VS內置的發布工具了。
在VS中“新建項目”-“其他項目類型”-“安裝和部署”-“安裝向導”,按照提示設置一下。當你選取需要發布的應用程序項目時,一旦找到其“主輸出”(對應××.exe),向導會自動搜索出依賴的DLL。
編譯這個“安裝項目”後,生成了*.msi文件,以後直接運行它就可以進行安裝(好像MS Office等專業軟件一樣^_^)。

二、靜態鏈接MFC庫
在解決方案管理器窗口,右擊項目名,選“屬性”。在“項目默認值”中,找到“MFC的使用”,選“在靜態庫中使用MFC”。這樣就可以把依賴的那些DLL中,需要的函數都靜態鏈接到exe中。最終只要一個exe就可以運行了。
不過這樣靜態鏈接的exe體積會臃腫很多,^_^
 

DEBUG 與Release的不同

DEBU是調試版本,可以說是系統還在開發中Release是發布版本,說明系統可以給用戶使用了 主要區別是在於運行時產生的信息不同,以及運行的性能不同
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved