當前位置:學者齋 >

計算機 >C語言 >

VC++6.0環境下除錯c語言程式碼的方法和步驟

VC++6.0環境下除錯c語言程式碼的方法和步驟

下文將為大家帶來VC++6.0環境下除錯C語言程式碼的方法和步驟,歡迎參考學習!更多內容請關注應屆畢業生考試網!

VC++6.0環境下除錯c語言程式碼的方法和步驟

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

(1)編輯。可以用任何一種編輯軟體將在紙上編寫好的C語言程式輸入計算機,並將C語言源程式檔案*.c以純文字檔案形式儲存在計算機的磁碟上(不能設定字型、字號等)。

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

(3)連線。程式編譯後產生的目標檔案是可重定位的程式模組,不能直接執行。連線將編譯生成的各個目標程式模組和系統或第三方提供的庫函式“*”連線在一起,生成可以脫離開發環境、直接在作業系統下執行的可執行檔案“*”。

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

  al C++ 6.0 開發環境介紹

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

  圖1-1 Visual C++介面

跟大多數的 Windows 應用程式一樣,Visual C++最上面是選單,然後是工具欄,中央是工作區(左側視窗是專案工作區,C 程式設計師可以在 ClassView 頁的Globals 全域性選項裡檢視到正在開發的全域性變數和全域性函式,右側視窗是編輯視窗,可以同時對多個文擋進行編輯)。最下面狀態列上面的視窗是輸出視窗,主要用於顯示編譯、連線資訊和錯誤提示,我們可以雙擊錯誤提示行,VC 會在編輯視窗內打開出錯程式碼所在的源程式檔案,並將游標快速定位到出錯行上。   在編輯視窗內輸入、編輯程式原始碼時,原始碼會顯示"語法著色"。在預設情況下,程式碼為黑色,夾以綠色的注 釋和藍色的關鍵字(指 VC 所保留的 public、private、new 和 int 等等)。我們還可以通過 Tools 選單下的 Options 對話方塊中的 Format 選 項卡進一步設定指定顏色。

  2.1 專案

開發一個應用程式,往往會有很多源程式檔案、選單、圖示、圖片等資源,VC 通過“專案”管理上述資源。所以,在開始開發 C 程式時,我們就要在一個指定資料夾內建立一個以 為副檔名的專案工作區檔案,包含專案中所有檔案的名稱、 檔案所在目錄、編譯器和聯結器的選項以及專案工作的其他資訊;此外還有以 為副檔名的專案記錄檔案,以 為副檔名的工作區選項檔案(包含 Developer Studio 的所有個人設定 - 包括顏色、字型、工具欄、哪個檔案被開啟以及 MDI 視窗如何被定位和最新除錯中的斷點)等。在開啟專案工作區檔案時其他檔案隨即會自動開啟。在此資料夾下還會建立 Res(資源)、Debug(除錯)、Release(發行)等子資料夾。

  2.2編輯

在編輯視窗開啟、瀏覽檔案、輸入、修改、複製、剪下、貼上、查詢、替換、撤銷等操作,可以通過選單完成,也可以通過工具欄按鈕完成,這些與 Word 之類的 windows 編輯器用法完全相同,這裡就不再重複敘述了。

  2.3輔助

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

  3.開發 C 程式

  3.1開發單個 C 語言程式

  1. 建立一個工作資料夾。

由於開發過程會產生一系列檔案,建議每開發一個新的 C 程式都建立一個工作資料夾。還可以將所有工作資料夾集中到一起,如E:LXHEX01-01 、E:LXHEX03-02 等。

  2. 啟動 Visual C++。

  3. 新建一個 C 語言源程式。

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

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

選擇 Files 標籤下的 C++ Source File 在“E:LXHEG01-01”資料夾中建立C 程式:eg01-01.c,如圖 1-3 所示。

  圖1-3 Files標籤

  4. 輸入、編輯源程式。

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

  圖1-4 輸入源程式

  5. 編譯、連線。

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

  圖1-5 建立預設工作區

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

  6. 執行

點選“Build MiniBar”工具欄上的“Execute Program”按鈕執行程式。也可以選擇選單 Build 下的 Execute 選單項。更簡捷的方法是直接按功能鍵 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("hellon");

}

將其新增到“eg01-01.c”的步驟如下: 首先開啟“”,點選專案工作區 ClassView 頁的 Globals 選項,選擇選單 Project 下的“Add To Project”選單項的“Files……”

  圖1-6 新增多個源程式檔案

然後在“Insert Files into Project”對話方塊中選取“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”(組建)選單下的“Start Debug”(開始除錯)中點選 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 所示:

  圖1-12 察看記憶體

  • 文章版權屬於文章作者所有,轉載請註明 https://xuezhezhai.com/zh-tw/jsj/cyuyan/qxkqq.html