官术网_书友最值得收藏!

2.1 Visual C++簡介

Visual C++(簡稱為Visual C++、MSVC、VC++、VC,為了方便起見,后續(xù)簡稱為VC)是微軟的C++開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯、編譯、調(diào)試C/C++等編程語言的功能。VC提供了強大的調(diào)試工具,方便開發(fā)人員迅速發(fā)現(xiàn)和定位BUG,從而快速地修復(fù)BUG。目前VC最新的版本是VC 2022。

VC對C語言和C++語言的支持緊密結(jié)合C和C++標準,VC 2015基本上支持C99標準,VC 2017支持C++17標準,VC 2019支持C++20標準的大部分核心功能以及幾乎全部C++20標準庫。

對于熟練使用VC的用戶,VC是Windows軟件開發(fā)的一大利器,簡直無所不能。而對于不太熟悉VC的用戶,VC只能用來開發(fā)Windows軟件,而且僅限于Windows應(yīng)用層軟件。隨著VC近年來的不斷升級,其功能和特性已經(jīng)發(fā)生了巨大變化,用戶可以使用VC集成開發(fā)環(huán)境輕松開發(fā)Windows應(yīng)用層軟件,還可以開發(fā)Windows內(nèi)核驅(qū)動程序。對于想學(xué)習(xí)Windows驅(qū)動開發(fā)的讀者,VC集成開發(fā)環(huán)境還提供了巨大的便利,不但降低了開發(fā)驅(qū)動的門檻,而且大大縮短了開發(fā)周期,效率也得到了提高。更重要的是,雖然以前能夠使用VC來開發(fā)Windows驅(qū)動,但僅僅是使用VC來編輯代碼,如果要對代碼進行編譯,通常需要以命令行的方式來進行,這非常不方便,而且需要借助其他調(diào)試工具(比如WinDbg)來進行內(nèi)核調(diào)試。現(xiàn)在,這個局面已經(jīng)得到了徹底的改觀,新版本的VC(比如VC 2019)開發(fā)Windows內(nèi)核驅(qū)動的方式已經(jīng)與開發(fā)普通的應(yīng)用層程序的方式基本一致,內(nèi)核的雙機調(diào)試也更方便。本書后續(xù)章節(jié)會對Windows驅(qū)動開發(fā)進行簡單的介紹。

VC的另一個變化就是開發(fā)平臺的功能更加完善。圖2-1是VC 2019創(chuàng)建C++項目的平臺選擇界面。C++項目可以支持更多平臺和類型,比如可以在Windows系統(tǒng)中使用VC開發(fā)Linux應(yīng)用,甚至iOS、Android等應(yīng)用。以前在創(chuàng)建Linux系統(tǒng)下的C++項目時,一般都是在Windows系統(tǒng)中使用圖形化的代碼編輯工具(比如Source Insight等)進行編輯,再通過文件傳輸工具傳輸?shù)絃inux系統(tǒng)中進行編譯、測試和運行。一旦發(fā)現(xiàn)編譯有錯誤或者代碼有BUG,就需要修改代碼之后再回傳到Linux系統(tǒng)中。如此反復(fù),效率非常低下,這是因為通過Linux命令行編寫大規(guī)模的代碼確實不方便,尤其是有多個模塊時,來回切換代碼文件十分煩瑣。

圖2-1 VC 2019創(chuàng)建C++項目的平臺選擇界面

由于VC 2019的出現(xiàn),效率低下這一情況得到極大改善。通過VC 2019可以直接創(chuàng)建Linux系統(tǒng)下的C++項目,并在VC 2019中進行編碼、編譯、調(diào)試和測試,與開發(fā)普通的Windows系統(tǒng)應(yīng)用程序一樣方便。本書后面也會有專門的章節(jié)來簡單介紹如何使用VC進行Linux程序的開發(fā)和調(diào)試。

盡管VC的版本已經(jīng)更新至2022版,但是本書中所討論的調(diào)試技術(shù)的核心幾乎沒有變化,即使是使用VC 6等早期版本,大多數(shù)功能也是適用的,只有少數(shù)功能是VC較高版本才具有的,比如遠程調(diào)試Linux程序、開發(fā)調(diào)試Windows驅(qū)動等功能,需要用到VC 2017或者更高版本。

雖然本書的核心調(diào)試技術(shù)幾乎在所有的VC版本中都可以體現(xiàn),但是為了能夠領(lǐng)略新技術(shù)帶來的便利并讓大家感受到VC的新特性,本書以目前最新的VC 2019作為演示軟件。

2.1.1 VC 2019版本選擇

Visual Studio 2019共有3個版本:社區(qū)版、專業(yè)版和企業(yè)版。其中專業(yè)版和企業(yè)版需要收費,而社區(qū)版是免費的。雖然3個版本所支持的功能有一些區(qū)別,但是本書中使用的調(diào)試技術(shù)得到3個版本的支持,讀者可以免費下載Visual Studio 2019社區(qū)版。因為我們只需要VC的一部分功能,其他很多功能在本書中沒有涉及。Visual Studio 2019的3個版本的異同如表2-1所示。

表2-1 Visual Studio 2019的3個版本的異同

其中社區(qū)版不允許企業(yè)用戶(企業(yè)用戶指的是超過250臺PC或年收入超過100萬美元的組織)使用,對本書中要使用的功能沒有任何限制。另外一個區(qū)別是社區(qū)版只支持部分高級調(diào)試功能。在Visual Studio 2019中,高級調(diào)試功能主要包括表2-2所示的幾個方面。

表2-2 Visual Studio 2019高級調(diào)試功能

下面簡單介紹Visual Studio 2019社區(qū)版不支持的高級調(diào)試功能。

智能追蹤:可以記錄和追蹤代碼執(zhí)行的歷史信息,記錄特殊的事件、調(diào)試過程中局部變量窗口中的相關(guān)代碼、數(shù)據(jù)以及函數(shù)調(diào)用信息等。智能追蹤可以幫助開發(fā)人員更便捷地發(fā)現(xiàn)BUG,并追蹤BUG出現(xiàn)的原因。

代碼映射調(diào)試器集成:調(diào)試時生成代碼的映射關(guān)系,比如各個模塊、各個文件之間的調(diào)用關(guān)系等。對于一些大型項目,調(diào)試時理解代碼之間的關(guān)系對后期工作非常有幫助。

.NET內(nèi)存轉(zhuǎn)儲分析:針對.NET的dump文件分析。

快照調(diào)試程序:主要是針對微軟云(Azure)應(yīng)用服務(wù)程序的一種調(diào)試技術(shù),可以理解為現(xiàn)有調(diào)試技術(shù)的綜合體,比如遠程調(diào)試、dump文件分析等。在生產(chǎn)環(huán)境中運行時,如果執(zhí)行到應(yīng)用程序的某行代碼,就會自動創(chuàng)建一個該應(yīng)用程序的快照(dump)文件,而不會影響現(xiàn)有應(yīng)用程序的執(zhí)行,因此可以遠程分析該dump文件。未來該技術(shù)可能也會應(yīng)用到Azure的虛擬機快照中。

按時間順序查看調(diào)試:可以簡單地理解為錄像機,即對代碼的執(zhí)行過程進行“錄像”,還可以執(zhí)行回放操作,這對于分析BUG的產(chǎn)生過程是非常有用的。

2.1.2 VC 2019安裝

Visual Studio 2019社區(qū)版可以從微軟官方地址下載。

建議選擇下載中文版,本書中的軟件界面也都會是中文顯示。在安裝時需要注意,在“工作負載”選項卡中選中“使用C++的桌面開發(fā)”和“使用C++的Linux開發(fā)”兩項,并勾選圖2-2和圖2-3所示的可選項。

圖2-2 選中“使用C++的桌面開發(fā)”

圖2-3 選中“使用C++的Linux開發(fā)”

主站蜘蛛池模板: 壶关县| 玛沁县| 高陵县| 洪洞县| 白银市| 政和县| 金川县| 鞍山市| 和平县| 呼图壁县| 威信县| 柏乡县| 平湖市| 武城县| 丹寨县| 迁安市| 邻水| 永靖县| 富裕县| 博罗县| 永修县| 明星| 双城市| 健康| 云林县| 康马县| 防城港市| 河北省| 石狮市| 霸州市| 阳原县| 子长县| 曲阳县| 内黄县| 九龙城区| 靖西县| 海原县| 肇东市| 双城市| 黎平县| 松江区|