如何用CodeBlocks調試?


一、簡介

  這篇文章我主要會介紹CodeBlocks的調試功能,並簡單講述如何使用它。

二、前言

  大家好,最近和小伙伴們討論修改程序的時候,我突然想到,授人以魚不如授人以漁(指調試),於是這篇文章應運而生,當然了,這是筆者第一次寫博客並發表,如果有錯誤或者可以改進的地方,歡迎探討。

三、什么是調試?

  在寫程序的過程中會不可避免的產生BUG,而這個時候調試器就是提升解決問題效率的好工具了,它能夠快速的定位到BUG的位置,並極大極大的提升你優化和修改程序的效率。

四、在CodeBlocks中如何進行調試

  1調試的目的

  調試的目的主要是跟蹤變量值,觀察程序是否按預期的情況在執行,如果遇到變量值與預期不符,則問題就出現在之前的語句。在調試之前,需要考慮可能有問題的代碼段,在此代碼段之后設置斷點。

  1.1創建一個項目

  調試功能只能在項目中使用,單獨打開一個文件是不行的,而且項目路徑不能包含中文,否則會導致問題。

 

  1.2完成程序的編寫

  為了體現調試的功能,我寫了個包含常見錯誤的程序,程序的功能是調用函數實現a+b,函數結果存於c中,並輸出c的值。

 

  1.3設置斷點

 

  輕輕的在行號的右邊點一下就可以了,這個小紅點就是斷點,調試時程序執行到這一行會自動停止,如果要取消這個斷點則點擊一下那個小紅點(調試的時候取消是沒用的)。

  1.4進行調試

  首先介紹一下我們將要使用的功能。

 

  從左向右分別介紹:

  ①調試\繼續。這個就是開始調試的按鈕,當然,在沒有設置斷點的時候是不會停下來的,繼續功能是指讓程序繼續運行,直到下一個斷點或者輸入數據。

  ②執行到光標處。本質上同樣是開始調試,但是這個調試是從你點擊的地方開始的,如圖所示,我使用這個功能前把光標放在了(就是鼠標點到了)12行,現在它是從13行開始調試,而不是從斷點開始,這里我加了一行代碼,不過無關緊要。

 

  ③下一行。功能為執行本行代碼,在開始調試后,我們需要逐行調試代碼時,就需要它了,繼續上一張圖,點了一下之后輸出了lalalala,並且黃色光標移到了下一行,值得注意的是,執行到cin的時候,我們需要輸入數據之后才能繼續,不輸入數據只戳下一行是沒用的哈。

 

 

 

  ④跟進。作用為黃色光標指向函數的時候,使用這個功能就能執行進入函數內部,

 

  ⑤跟出。字面意思,與跟進相反,可以從函數里跳出。

  ⑥下一條指令。如果一行里面有多個指令(如int a;int b;)就是逐個指令運行。

  ⑦step into instruction沒怎么用到過,不怎么了解。

  ⑧同上,也不怎么用到。

  ⑨停止調試器。字面意思。

  ⑩調試窗口。開始調試之后打開,核心功能都在里面了,各有各的功能,其中監視比較重要,可以顯示各個數據的值,其他筆者用得比較少,感興趣可以去查閱相關資料。

 

 

  如圖所示,使用監視之后可以看見各個值的量,隨着你的逐行調試也可以看見它們什么時候發生了變化,右鍵點擊變量也可以把他們添加到監視中去。在這個程序中,可以看見c的值從頭到尾都沒變過,可以判斷是c的引用的問題,修改后就搞定了。

  下圖為修改后的調試

  1.5復雜一點的例子

  這里以一個二叉樹的節點為例子

  按住CONTROL鍵點“...”按鈕可以看見這個結構體里變量的值。

 

  *T->lchild可以訪問T的左子樹,以此類推可以推出這棵樹所有節點的值。(就是有點麻煩,希望知道更好辦法的大佬可以說一下有沒有更好的辦法)

 

  1.6 VScode中的使用

  同樣以剛才的二叉樹為例子,VScode中的調試與CodeBlocks中大致相同,只是它在鼠標指上去的時候就會顯示值,點擊箭頭就可以展開,看見指針指向的結構體的值。

  可以看見VScode確實挺香的。(笑)

五、后記

調試功能不僅僅於此,不僅可以使用圖形界面調試,還可以使用命令行來進行調試,不過對於目前階段的學習(指本科)不是很需要這方面的知識。

希望大家都能有所收獲,感謝大家讀完本文!

2021/11/30 21:18 AwakeFantasy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM