<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 知識大全 > 知識百科 > 百科知識 > .net debug和release的區別

        .net debug和release的區別

        時間: 淑航658 分享

        .net debug和release的區別

          你知道.net debug指的是什么嗎?release指的又是什么呢?兩者之間有什么區別呢?下面就讓學習啦小編來告訴你.net debug和release的區別吧。

          .net debug和release的區別一

          Debug 通常稱為調試版本,它包含調試信息,并且不作任何優化,便于程序員調試程序。Release 稱為發布版本,它往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以便用戶很好地使用。

          Debug 和 Release 的真正區別,在于一組編譯選項。

          Debug 版本

          參數含義

          /MDd /MLd 或 /MTd 使用 Debug runtime library(調試版本的運行時刻函數庫)

          /Od 關閉優化開關

          /D "_DEBUG" 相當于 #define _DEBUG,打開編譯調試代碼開關(主要針對assert函數)

          /ZI

          創建 Edit and continue(編輯繼續)數據庫,這樣在調試過程中如果修改了源代碼不需重新編譯

          GZ 可以幫助捕獲內存錯誤

          Release 版本 參數含義

          /MD /ML 或 /MT 使用發布版本的運行時刻函數庫

          /O1 或 /O2 優化開關,使程序最小或最快

          /D "NDEBUG" 關閉條件編譯調試代碼開關(即不編譯assert函數)

          /GF 合并重復的字符串,并將字符串常量放到只讀內存,防止被修改

          .net debug和release的區別二

          1. 變量。

          大家都知道,debug跟release在初始化變量時所做的操作是不同的,debug是將每個字節位都賦成0xcc(注1),而release的賦值近 似于隨機(我想是直接從內存中分配的,沒有初始化過)。這樣就明確了,如果你的程序中的某個變量沒被初始化就被引用,就很有可能出現異常:用作控制變量將 導致流程導向不一致;用作數組下標將會使程序崩潰;更加可能是造成其他變量的不準確而引起其他的錯誤。所以在聲明變量后馬上對其初始化一個默認的值是最簡 單有效的辦法,否則項目大了你找都沒地方找。代碼存在錯誤在debug方式下可能會忽略而不被察覺到,如debug方式下數組越界也大多不會出錯,在 release中就暴露出來了,這個找起來就比較難了:( 還是自己多加注意吧

          2. 自定義消息的消息參數。

          MFC為我們提供了很好的消息機制,更增加了自定義消息,好處我就不用多說了。這也存在debug跟release的問題嗎?答案是肯定的。在自定義消息 的函數體聲明時,時常會看到這樣的寫法:afx_msg LRESULT OnMessageOwn(); Debug情況下一般不會有任何問題,而當你在Release下且多線程或進程間使用了消息傳遞時就會導致無效句柄之類的錯誤。導致這個錯誤直接原因是消 息體的參數沒有添加,即應該寫成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam); (注2)

          3. release模式下不出錯,但debug模式下報錯。

          這種情況下大多也是因為代碼書寫不正確引起的,查看MFC的源碼,可以發現好多ASSERT的語句(斷言),這個宏只是在debug模式下才有效,那么就 清楚了,release版不報錯是忽略了錯誤而不是沒有錯誤,這可能存在很大的隱患,因為是Debug模式下,比較方便調試,好好的檢查自己的代碼,再此 就不多說了。

          4. ASSERT, VERIFY, TRACE..........調試宏。

          這種情況很容易解釋。舉個例子:請在VC下輸入ASSERT然后選中按F12跳到宏定義的地方,這里你就能夠發現Debug中ASSERT要執行 AfxAssertFailedLine,而Release下的宏定義卻為"#define ASSERT(f) ((void)0)"。所以注意在這些調試宏的語句不要用程序相關變量如i++寫操作的語句。VERIFY是個例外,"#define VERIFY(f) ((void)(f))",即執行,這里的作用就不多追究了,有興趣可自己研究:)。

          .net debug和release的區別三

          Debug與Release不同的問題在剛開始編寫代碼時會經常發生,99%是因為你的代碼書寫錯誤而導致的,所以不要動不動就說系統問題或編譯器問題, 努力找找自己的原因才是根本。我從前就常常遇到這情況,經歷過一次次的教訓后我就開始注意了,現在我所寫過的代碼我已經好久沒遇到這種問題了。下面是幾個 避免的方面,即使沒有這種問題也應注意一下:

          1. 注意變量的初始化,尤其是指針變量,數組變量的初始化(很大的情況下另作考慮了)。

          2. 自定義消息及其他聲明的標準寫法。

          3. 使用調試宏時使用后最好注釋掉。

          4. 盡量使用try - catch(...)。

          5. 盡量使用模塊,不但表達清楚而且方便調試。


        看了.net debug和release的區別的人還看:

        1.Linux CentOS 6怎么換更新源

        2.CentOS系統怎么安裝VLC播放器

        3.CentOS怎么安裝Adobe Flash Player

        4.怎么查看linux操作系統

        1207910 主站蜘蛛池模板: 亚洲精品成人片在线观看精品字幕| 国内精品视频一区二区三区八戒| 亚洲a毛片| 久久亚洲国产成人亚| 亚洲综合精品中文字幕| 日本不卡三区| 日本亚洲成人中文字幕 | 欧美饥渴熟妇高潮喷水| 人成午夜免费大片| 成人性生交片无码免费看| 无码精品国产VA在线观看DVD| 中文字幕在线精品人妻| 东方四虎在线观看av| 亚洲国产韩国欧美在线| 精品国产成人国产在线视| 波多野结衣久久一区二区| 色综合色综合色综合久久| 成人精品日韩专区在线观看| 国产精品免费中文字幕| 久久精品国产亚洲av电影| 国产喷水1区2区3区咪咪爱AV| 日韩av毛片在线播放| AV秘 无码一区二| 一区二区三区四区高清自拍| 国产午夜成人久久无码一区二区| 婷婷亚洲国产成人精品性色| 综合欧美视频一区二区三区| 九九热在线免费观看视频| 亚洲男女内射在线播放| 欧美13一14娇小xxxx| 热99精品视频| 亚洲av成人在线一区| 裸体女人亚洲精品一区| 国产精品制服丝袜第一页| 中文字幕国产日韩精品| 五月丁香综合缴情六月小说| 欧美z0zo人禽交另类视频| 国产一区二区精品网站看黄| 亚洲产在线精品亚洲第一站一| 四虎永久在线精品无码视频| 亚洲天堂一区二区三区三州|