非典型性C語言教程- x.1 VC8的使用


寫大程序時,不用IDE是比較痛苦的。還是拋棄每個程序只有一個源文件的做法,找一個合適的IDE來幫助你學習把。MS已經推出了Visual Studio 2005,而且Visual Studio 2005有免費的的Express版本,所以MS的IDE就以Visual Studio 2005帶的VC8為例。不要再提VC6了。

啟動Visual Studio 2005,如圖
VS2005 是一個強大的IDE,可以開發C#, VB.Net,Asp.Net 2.0等多種程序,這里我們使用的是VC,只用它寫C語言或是C++的命令行程序。選擇菜單 文件->新建->項目,彈出新建項目對話框:
一般的C/C++的命令行程序, 選擇Win32控制台應用程序。輸入項目名字,確定就出現向導框:


為了簡化,一般選中“空項目”,不選的話VC會自動給你生成一個hello world 程序,且帶預編譯頭和VC特有的預處理指令,比較麻煩。完成之后就創建完了一個工程(project)。

工程創建完成后就需要向工程添加源文件和頭文件,此時菜單中多了“工程”一項, 選擇“工程”->添加新項:
可以添加C++源文件和頭文件,如果你添加的C++源文件手動的添加上.c的后綴,那么會生成一個C源文件,不加擴展名后綴,就會自動加上.cpp表示是一個C++文件。添加之后,會自動打開這個文件進行編輯,同時右邊的“解決方案管理器”中會出現你添加的源文件:

寫 一個hello world 程序,就可以編譯,和構建(build)了。菜單上有2個項目 一個是生成, 一個是調試。生成->生成解決方案,就是構建整個程序。 VC6時還有編譯單個源文件的 編譯選項,后來在VS2002中就沒有了, 只有生成整個工程的選項了。如果你不生成直接選調試菜單中的 “開始執行(不調試)”或是“啟動調試”, IDE會自動先構建整個工程。另外你可以打開生成和調試的工具條,VS2005和MS的其他程序入Office一樣,可以拖動工具條,或是關閉打開工具 條。執行一下看看,會快速的彈出一個命令行窗口,然后就消失了。如果你選擇“開始執行(不調試)”對於命令行程序IDE會在程序結束時自動加上一個“ 請按任意鍵繼續. . .”, 等你敲一下鍵盤之后程序在結束,讓你容易的看到程序的運行結果。

程序總會出錯,出錯了就要調試。下面介紹一下VC8的基本調試功能。首先強調3點:
  1. 錯誤就是程序沒有按預期的得到結果,而不是沒有編譯過。
  2. 絕大多數情況下,編譯器和操作系統或是程序庫是不會錯誤的,出錯了首先查自己程序的問題。
  3. 對於錯誤的程序你運行上一千遍它肯定還是得到錯誤的結果,出錯了趕緊看是調試找錯誤,而不是在那一遍一遍的運行程序,期望God來幫你搞定程序。
“啟動調試”就會開始程序的調試,你在下一個斷點,則IDE停住的時候就會進入調試的界面。如圖:
這個中間是源代碼窗口,上面是有一個調試工具條,當然你也可以使用對應的菜單。下面左邊是監視窗口,右邊有多個信息窗口。

下斷點很簡單, 你可以用菜單項 “調試”->”新建斷點“ 也可以直接點擊代碼最左邊的條,就是上圖紅色圓點在的位置。下了斷點之后啟動調試就會在斷點處停住。

左 下方的監視窗口默認有3個tab頁,分別是自動,局部,和監視。自動顯示的是當前代碼的位置相關的變量,局部顯示的是當前的局部變量,監視可以自己輸入表 達式的值,看表達式的結果。監視窗口可以開多個,表達式的值不是都支持,過於復雜的表達式是無法計算的。上圖可以看到自動窗口中顯示了變量n 和ret的值。右下窗口中最重要的一個是函數調用堆棧。其中顯示的當前中斷的地方的函數調用關系。自己看一看,很容易就可以理解。有一個使用函數調用堆棧 的小技巧。有時候,由於指針越界,突然彈一個訪問違例框:
這個例子中, 我們在函數ff的開始 寫了地址0x00000000的,於是指針越界了。這時候我們可以調試程序,指針越界的位置會造成一個異常: 此時中斷程序,觀察函數調用堆棧窗口:
可以清除的看到,是main函數在19行調用了ff函數,ff函數在7行發生了異常, 可以立刻定位錯誤所在。

調 試工具條中有豐富的選項, 常用的有啟動調適,中止調試,暫停, 以及逐語句(step into),逐過程(step over),跳出(step out)。差別在於如果下一條語句是一個函數,那么逐語句(step into)會跟蹤到函數里面去,逐過程(step over)會執行完函數。對於跳出(step out)則是一直執行到當前函數返回。其他的函數顯示當前寄存器,顯示反匯編的, 直接顯示內存地址的各種工具。

VC8是一個強大的工具,自己動手用一用,就能熟悉。下一篇,講Unix平台下用NetBeans+C/C++Pack來編寫C語言程序。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com