VisualStudio解決方案配置Debug和Release選項

前言

本文章基於VisualStudio2017編寫
前兩天騰訊電話面試中面試官問到既然平時有使用VS進行項目調試,那介紹一下VS中Debug選項和Release選項有什麼不同,我聽到這問題時,知道Debug選項是我們平時使用VS要開始運行時點的那一個按鈕:
這裏寫圖片描述
但是這個release是真的沒有注意到過,我甚至都不確定面試官說的英文單詞是什麼。於是非常尷尬地,我跟面試官重複了好幾次 “啊?release?” “re–lea–se?” 這個問題在我表示不理解後作罷…

今天在用VS調試數據挖掘的線性迴歸作業,這個每次運行都要讀取25000*384個csv文件中的數據,並且對這些數據進行梯度下降算法計算,每次迭代都要遍歷這個規模的數據的程序,運行一次下來就要半個多小時時間。某次調試時,我注意到debug按鈕旁貌似有個下拉菜單,展開後,前幾天我感覺雲裏霧裏的”Release”靜靜躺在其中。
這裏寫圖片描述

我先是想起前幾天面試被問到的這個問題後,google了Debug和Release的不同,簡單地瀏覽到Debug是方便debug調試的,而Release是能優化程序運行的之後,出於試驗目的選擇了Release選項運行程序。

這個原本在Debug配置下要運行半個小時的程序,使用Release配置,竟用了10S鍾就完成了運行…

引用Jessie J在聽到呼麥後的評論:“I’m absolutely shocked, but in a great way.”


這兩個選項是什麼?

“Debug” and “Release” are actually just two labels for a whole slew of settings that can affect your build and debugging.
Debug選項和Release選項實際上是爲一系列極多能影響程序的build和debugging的配置的標籤/名字。(這兩個配置選項的不同貫穿整個窗口,不止是優化配置不同)
Debug選項配置

Eelease選項配置

當你選擇了不同的運行選項,用來運行你的程序的配置就會不同,由此程序運行的效果就會受到影響。

它們有什麼區別?

Debug選項稱爲調試版本,顧名思義這個選項是調試的時候使用的。這個選項的配置中,所有代碼生成的優化都是關閉的,於是我們觸發斷點後可以通過即時/局部變量窗口來觀察對應的變量。
Program Debug Database files, which allow you to follow the execution of the program quite closely in the source during run-time.
All optimizations turned off, which allows you to inspect the value of variables and trace into functions that might otherwise have been optimized away or in-lined
A _DEBUG preprocessor definition that allows you to write code that acts differently in debug mode compared to release, for example to instrument ASSERTs that should only be used while debugging
Linking to libraries that have also been compiled with debugging options on, which are usually not deployed to actual customers (for reasons of size and security
Release選項稱爲發佈版本,這個選項的配置使得編譯器可以對我們的代碼進行低等級的,複雜的優化。優化後代碼可能會”面目全非“,導致單步調試變得不可行,我們也無法在變量窗口中看到變量,因爲我們要觀察的變量可能被優化了。並且發佈版本不會生成.PDB文件(.PDB文件讓調試器能知彙編指令與代碼行數之間的對應關係)

總之

需要調試程序時,選用Debug選項
需要程序快速運行時,選用Release選項

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章