VC++6.0環境下調試C語言編程代碼的方法和步驟

C語言是面向過程的,而C++是面向對象的

C和C++的區別:

C是一個結構化語言,它的重點在于算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C與C++的最大區別:在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”,而就語言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯!算法是程序設計的基礎,好的設計如果沒有好的算法,一樣不行。而且,“C加上好的設計”也能寫出非常好的東西。

1.C語言程序四步開發步驟


(1)編輯。可以用任何一種編輯軟件將在紙上編寫好的C語言程序輸入計算機,并將C語言源程序文件*.c以純文本文件形式保存在計算機的磁盤上(不能設置字體、字號等)。

(2)編譯。編譯過程使用C語言編譯程序將編輯好的源程序文件“*.c”,翻譯成二進制目標代碼文件“*.obj”。編譯程序對源程序逐句檢查語法錯誤發現錯誤后,不僅會顯示錯誤的位置(行號),還會告知錯誤類型信息。我們需要再次回到編輯軟件修改源程序的錯誤,然后,再進行編譯,直至排除所有語法和語義錯誤。

(3)連接。程序編譯后產生的目標文件是可重定位的程序模塊,不能直接運行。連接將編譯生成的各個目標程序模塊和系統或第三方提供的庫函數“*.lib”連接在一起,生成可以脫離開發環境、直接在操作系統下運行的可執行文件“*.exe”。

(4)運行程序。如果經過測試,運行可執行文件達到預期設計目的,這個C語言程序的開發工作便到此完成了。如果運行出錯,這說明程序處理的邏輯存在問題,需要再次回到編輯環境針對程序出現的邏輯錯誤進一步檢查、修改源程序,重復編輯→編譯→連接→運行的過程,直到取得預期結果為止。


2.Visual?C++6.0?開發環境介紹?


Visual C++6.0(以后簡稱?VC)是?Microsoft?公司推出的可視化開發環境DeveloperStudio?下的一個組件,為我們提供了一個集程序創建、編輯、編譯、調試等諸多工作于一體的集成開發環境(IDE)。VC?集成開發環境功能強大,不僅提供了大量的向導(Wizard?),還有完備的幫助功能(MSDN)。所以,初學者學習?C?語言編程,并不需要全面了解開發環境的全部功能。我們可以在安裝?VC時選擇完全安裝?MSDN,然后在遇到問題時再去查閱?MSDN?中的相關說明。?通過“開始”菜單或桌面快捷方式啟動?Visual C++進入集成開發環境,如圖?1-1?所示。

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多干貨和技術資料分享!

?1-1Visual C++界面

??????跟大多數的?Windows?應用程序一樣,Visual C++最上面是菜單,然后是工具欄,中央是工作區(左側窗口是項目工作區,C?程序員可以在?ClassView?頁的Globals?全局選項里查看到正在開發的全局變量和全局函數,右側窗口是編輯窗口,可以同時對多個文擋進行編輯)。最下面狀態欄上面的窗口是輸出窗口,主要用于顯示編譯、連接信息和錯誤提示,我們可以雙擊錯誤提示行,VC?會在編輯窗口內打開出錯代碼所在的源程序文件,并將光標快速定位到出錯行上。?  在編輯窗口內輸入、編輯程序源代碼時,源代碼會顯示"語法著色"。在缺省情況下,代碼為黑色,夾以綠色的注釋和藍色的關鍵字(指?VC?所保留的?public、private、new?和?int?等等)。我們還可以通過?Tools?菜單下的?Options?對話框中的?Format?選項卡進一步設置指定顏色。

2.1?

項目

  開發一個應用程序,往往會有很多源程序文件、菜單、圖標、圖片等資源,VC?通過“項目”管理上述資源。所以,在開始開發?C?程序時,我們就要在一個指定文件夾內創建一個以.DSW?為擴展名的項目工作區文件,包含項目中所有文件的名稱、文件所在目錄、編譯器和連接器的選項以及項目工作的其他信息;此外還有以.DSP?為擴展名的項目記錄文件,以.OPT?為擴展名的工作區選項文件(包含?DeveloperStudio?的所有個人設置?-?包括顏色、字體、工具欄、哪個文件被打開以及?MDI?窗口如何被定位和最新調試中的斷點)等。在打開項目工作區文件時其他文件隨即會自動打開。在此文件夾下還會創建?Res(資源)、Debug(調試)、Release(發行)等子文件夾。

2.2

編輯

  在編輯窗口打開、瀏覽文件、輸入、修改、復制、剪切、粘貼、查找、替換、撤銷等操作,可以通過菜單完成,也可以通過工具欄按鈕完成,這些與?Word?之類的?windows?編輯器用法完全相同,這里就不再重復敘述了。


2.3輔助

VC?不僅提供了“語法著色”幫助我們閱讀程序,還可以通過一些快捷鍵檢查常見的括號不匹配錯誤。MSDN?也可以在編輯過程中提示存在的變量名、函數名。很多程序員借助類似?Visual Assist X?的工具輔助開發,減少程序出錯的可能性。


3.開發?C?程序

3.1

開發單個?C?語言程序

1.

創建一個工作文件夾。

由于開發過程會產生一系列文件,建議每開發一個新的?C?程序都創建一個工作文件夾。還可以將所有工作文件夾集中到一起,如E:\LXH\EX01-01?、E:\LXH\EX03-02?等。

2.

啟動?Visual C++。

3.

新建一個?C?語言源程序。

選擇菜單:File?下的?New?菜單項,出現如圖?1-2?所示?new(新建)對話框。

圖1-2選擇菜單File下的New菜單項

選擇?Files標簽下的?C++Source File?在“E:\LXH\EG01-01”文件夾中創建C?程序:eg01-01.c,如圖?1-3?所示。

?1-3Files標簽


4.?輸入、編輯源程序。

注意不要輸入中文標點符號,要及時按?Ctrl+S?保存文件,如圖?1-4?所示。

圖1-4輸入源程序

5.編譯、連接。

??????點擊“BuildMiniBar”工具欄上的“Build”按鈕進行編譯、連接。也可以選擇菜單?Build?下的?Build (F7)?菜單項或Rebuild All菜單項。更簡捷的方法是直接按?F7?功能鍵。?Visual C++將提示創建默認工作區,如圖?1-5?所示。

圖1-5創建默認工作區

點擊“是”按鈕。如果編譯完全成功,會顯示?"0 error(s), 0 warning(s)"。如果出現語法錯誤,則要返回?4?修改源程序。然后,再進行編譯,直至排除所有錯誤。

6.?運行

??????點擊“BuildMiniBar”工具欄上的“Execute Program”按鈕運行程序。也可以選擇菜單?Build?下的?Executeeg01-01.exe?菜單項。更簡捷的方法是直接按功能鍵?Ctrl+F5?運行程序。若運行結果正確,則?C?語言程序的開發工作到此完成。否則,要針對程序出現的邏輯錯誤返回?4?修改源程序,重復編譯—連接—運行的過程,直到取得預期結果為止。

7.?關閉

??????如果不退出?Visual C++,接著開發下一個?C?程序,需要先選擇菜單?File?下的?close workspace?菜單項關閉當前工作區,然后再按照?1-7?步驟開發下一個?C程序

3.2

添加多個?C?語言源程序

在用?C?語言開發應用程序時,往往會使用多個?C?語言源程序。現有?C?語言源程序文件“sayhello.c”:

#include

void sayhello(void)

{

printf("hello\n");

}

將其添加到“eg01-01.c”的步驟如下:首先打開“eg01-01.dsw”,點擊項目工作區?ClassView?頁的?Globals?選項,選擇菜單?Project?下的“Add ToProject”菜單項的“Files……”

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多干貨和技術資料分享!

圖1-6添加多個源程序文件

然后在“Insert Files intoProject”對話框中選取“sayhello.c”:

圖1-7選擇欲添加的源程序文件

再在?main()函數中添加子函數說明和調用:

圖1-8添加子函數說明和調用

程序運行結果如圖?1-9?所示:?

圖1-9程序運行結果



4.調試?C?程序

初學?C?語言程序設計,往往一看到自己編的程序出現錯誤就不知所措了。有些同學上機時,只要程序能夠順利運行,就認為大功告成,根本沒想到程序還存在某些隱患。要想不犯或少犯錯誤,就需要了解?C?語言程序設計的錯誤類型和糾正方法。?C?語言程序設計的錯誤可分為語法錯誤、連接錯誤、邏輯錯誤和運行錯誤。

語法錯誤:在編寫程序時違反了?C?語言的語法規定。語法不正確、關鍵詞拼錯、標點漏寫、數據運算類型不匹配、括號不配對等都屬于語法錯誤,在進入程序編譯階段,編譯系統會給出出錯行和相應“出錯信息”。我們可以雙擊錯誤提示行,將光標快速定位到出錯代碼所在的出錯行上。根據錯誤提示修改源程序,排除錯誤。?

連接錯誤:如果使用了錯誤的函數調用,比如書寫了錯誤的函數名或不存在的函數名,編譯系統在對其進行連接時便會發現這一錯誤。糾正方法同?1。

邏輯錯誤:雖然程序不存在上述兩種錯誤,但程序運行結果就是與預期效果不符。邏輯錯誤往往是因為程序采用的算法有問題,或編寫的程序邏輯與算法不完全吻合。邏輯錯誤比語法錯誤更難排除,需要程序員對程序逐步調試,檢測循環、分支調用是否正確,變量值是否按照預期產生變化。

運行錯誤:程序不存在上述錯誤,但運行結果時對時錯。運行錯誤往往是由于程序的容錯性不高,可能在設計時僅考慮了一部分數據的情況,對于其他數據就不能適用了。例如打開文件時沒有檢測打開是否成功就開始對文件進行讀寫,結果程序運行時,如果文件能夠順利打開,程序運行正確,反之則程序運行出錯。要避免這種類型的錯誤,需要對程序反復測試,完備算法,使程序能夠適應各種情況的數據。

為了方便程序員排除程序中的邏輯錯誤,VC?提供了強大的調試功能。每當我們創建一個新的?VC?工程項目時,默認狀態就是?Debug(調試)版本。調試版本會執行編譯命令_D_DEBUG,將頭文件的調試語句?ifdef?分支代碼添加到可執行文件中;同時加入的調試信息可以讓開發人員觀察變量,單步執行程序。由于調試版本包含了大量信息,所以生成的?Debug?版本可執行文件容量會遠遠大于Release(發行)版本。4.1?設置斷點

????? VC?可以在程序中設置斷點,跟蹤程序實際執行流程。設置斷點后,可以按“F5”功能鍵啟動?Debug?模式,程序會在斷點處停止。我們可以接著單步執行程序,觀察各變量的值如何變化,確認程序是否按照設想的方式運行。設置斷點的方法是:將光標停在要被暫停的那一行,選擇“Build MiniBar”工具欄按鈕“Insert/Remove Breakpoint (F9)”按鈕添加斷點,如圖?1-10?所示,斷點所在代碼行的最左邊出現了一個深紅色的實心圓點,這表示斷點設置成功。?

圖1-10設置斷點

如果該行已經設置了斷點,那么再次按“F9”功能鍵會清除該斷點。

4.2

調試命令

我們也可以在?VC“Build”(組建)菜單下的“StartDebug”(開始調試)中點擊?Go(F5)命令進入調試狀態,Build菜單自動變成?Debug?菜單,提供以下專用的調試命令:

Go(F5)

從當前語句開始運行程序,直到程序結束或斷點處。

Step Into(F11)

單步執行下條語句,并跟蹤遇到的函數。

Step Over(F10)

單步執行(跳過所調用的函數)

Run to Cursor(Ctrl+F10)

運行程序到光標所在的代碼行。

Step out(Shift+F11)

執行函數調用外的語句,并終止在函數調用語句處。

Stop Debugging(Shift+F5)

停止調試,返回正常的編輯狀態

必須在運行程序時用?Go?命令(而不是?Execute)才能啟動調試模式。在調試模式下,程序停止在某條語句,該條語句左邊就會出現一個黃色的小箭頭。我們隨時中斷程序、單步執行、查看變量、檢查調用情況。比如,按“F5”功能鍵進入調試模式,程序運行到斷點處暫停;不斷按“F10”功能鍵,接著一行一行地執行程序,直到程序運行結束。

需要說明的是,如果希望能一句一句地單步調試程序,在編寫程序時就必須一行只寫一條語句。

4.3察看變量

單步調試程序的過程中,我們可以在下方的Variables?(變量)子窗口和Watch(監視)子窗口中動態地察看變量的值,如圖?1-11?所示。Variables?子窗口中自動顯示當前運行上下文中的各個變量的值變量,而?Watch?子窗口內只顯示在此?Watch?子窗口輸入的變量或表達式的值。隨著程序的逐步運行,也可以直接用鼠標指向程序中變量查看其值。例如在圖?1-11?中,我們可以清楚地看到,程序已經為自動型變量?first、second、big?分配了內存,但它們的初始值是隨機的。

圖1-11察看變量

????? Variables子窗口有?3?個選項卡:Auto、Locals?和?This。

????? Auto選項卡:顯示出當前語句和上一條語句使用的變量,它還顯示使用?Step over?或?Step out?命令后函數的返回值。

????? Locals選項卡:顯示出當前函數使用的局部變量。

????? This選項卡:顯示出由?This?所指向的對象(C?語言不用?this)。?

??????如果變量較多,自動顯示的Variables?窗口難以查看時,還可以在右邊的Watch?子窗口中添加想要監控的變量名。例如,圖?1-11?在?Watch1?子窗口中添加了變量“first”。我們還可以直接將變量拖動到?Watch?子窗口的空白Name?框中。添加結束后,該變量的值會被顯示出來。并且隨著單步調試的進行,會看到變量?first?的值逐漸變化。如果各變量的值按照設想的方式逐漸變化,程序運行結果無誤,本次開發就順利結束了。如果發現各變量值的變化和設想的不一致,說明程序存在邏輯錯誤,那就需要停止調試,返回編輯窗口,查錯并修改程序。

4.4查看內存

數組和指針指向了一段連續的內存中的若干個數據。可以使用?memory?功能顯示數組和指針指向的連續內存中的內容。在?Debug?工具條上點?memory?按鈕,彈出一個對話框,在其中輸入數組或指針的地址,就可以顯示該地址指向的內存的內容。如圖?1-12?所示:

小編推薦一個學C語言/C++的學習裙【 二六三,六八八,二七六 】,無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!裙內有開發工具,很多干貨和技術資料分享!

這些是C/C++能做的

服務器開發工程師、人工智能、云計算工程師、信息安全(黑客反黑客)、大數據 、數據平臺、嵌入式工程師、流媒體服務器、數據控解、圖像處理、音頻視頻開發工程師、游戲服務器、分布式系統、游戲輔助等

圖1-12察看內存

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容