国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++調試工具——Debug(設置和移除斷點)

2020-05-23 14:26:23
字體:
來源:轉載
供稿:網友
由于引起運行時錯誤的原因難以被發(fā)現,所以我們有時候要利用工具來完成調試工作。Debug就是VC++提供的一種常用調試工具。它能夠讓語句一句一句或一段一段執(zhí)行,并且能夠觀察程序運行過程中各變量的變化情況。

在介紹如何使用Debug工具之前,我們要介紹一下什么是斷點(Breakpoint)。當程序運行到斷點的時候,它會暫時停止運行后面的語句,供用戶觀察程序的運行情況,并等待用戶發(fā)出指令。斷點不是語句,而是附在某條語句上的一個標志。

如何設置和移除斷點

點擊需要設置斷點的語句,使光標移動到該語句所在的行。按下F9鍵或C++調試工具——Debug(設置和移除斷點)按鈕就會發(fā)現,在該語句之前出現一個紅點,這就是斷點標志。如下圖11.5.1所示:
C++調試工具——Debug(設置和移除斷點)
如果要移除已經設置好的斷點,則同樣點擊斷點所在語句,按下F9鍵或C++調試工具——Debug(設置和移除斷點)按鈕則斷點被移除。我們可以個給一個程序設置多個斷點。

Go

設置了斷點之后,我們就能開始調試程序了。與以前不同,我們不能按執(zhí)行按鈕,而是要按F5鍵或C++調試工具——Debug(設置和移除斷點)按鈕,或者選擇Build菜單Start Debug中的Go。一旦按下了Go,則程序會正常運行直至遇到斷點。

我們以下面這個程序(程序11.5)來演示Debug功能的使用。該程序主要目的是統計一個不多于20項的正整數數列中,有多少對成雙倍關系的項,該數列以0結尾。比如數列1 3 4 2 5 6 0中,成雙倍關系的項有3對(1和2、2和4、3和6)。
#include <iostream>
using namespace std;
int main()
{
 int a[50],b[50],sum=0;//在此設置斷點
   for (int i=0;a[i-1]!=0;i++)
   {
     cin >>a[i];
     b[i]=2*a[i];
   }
   for (i=0;a[i]!=0;i++)
   {
      for (int j=0;b[j]!=0;j++)
      {
         if (a[i]==b[j])
         {
            sum++;
            break;
         }
      }
   }
   cout <<sum <<endl;
   return 0;
}

設置好斷點,按下Go按鈕以后,我們可以看到如下的界面:
C++調試工具——Debug(設置和移除斷點)

在界面中出現了三個我們不熟悉的窗口。在屏幕中間有著很多按鈕的小窗口叫Debug窗口,里面的按鈕可以控制程序繼續(xù)運行的方式。在屏幕左下方的窗口稱為Variables(變量)窗口,可以觀察每句語句執(zhí)行后變量變化的情況。在屏幕右下方的窗口稱為Watch(監(jiān)視)窗口,用戶可以監(jiān)視一些變量或簡單表達式的變化情況。

Debug窗口

C++調試工具——Debug(設置和移除斷點)
Debug窗口中,第一行按鈕是我們常用的。它們依次是:
Restart——重新開始調試。
Stop Debugging——停止當前調試。
Break Execution——停止程序的執(zhí)行并轉回調試狀態(tài)。
Apply Code Changes——使調試過程中修改的程序代碼生效。
ShowNext Statement——顯示將要執(zhí)行的下一條語句的位置。在語句之前用黃箭頭表示。
Step Into——進入語句調用的函數,并進行調試。
Step Over——不調試語句調用的函數。
Step Out——從當前調試的位置回到調用該函數的位置。
Run to Cursor——正常運行直到光標所在的語句。

我們在調試的時候,不要總是按“Step Into”,因為它對于一些系統提供的函數也是有效的。也就是說我們能夠用它詳細地看到系統是如何實現一個輸出功能的,甚至可以看到這些語句的匯編語言形式。但是,這卻并不是我們調試的主要目標。如果不小心進入了系統函數里,我們要及時按“Step Out”以退回到我們所編寫的程序中來。

在調試過程中,對于大多數語句應該按“Step Over”。如果要調試自己編寫的函數,則在調用該函數的語句處按“Step Into”。

Watch窗口

在Watch窗口中分為兩列,一列為Name,一列為Value。其中Name是可以被編輯的,我們可以在里面輸入變量名或簡單表達式。如果改變量或表達式是可以被計算的,則會在Value中顯示它們的值,如下圖11.5.3所示:
C++調試工具——Debug(設置和移除斷點)

如何用Debug找到錯誤

在Debug中,我們可以讓語句一句句地執(zhí)行。如果執(zhí)行到某一句語句時發(fā)生了運行時錯誤,那么這個錯誤一般就是由這個語句引起的。

在Debug中,我們可以觀察每一句語句執(zhí)行的順序和執(zhí)行后變量變化的情況。如果發(fā)現程序無法實現既定的功能,我們可以將期望的結果和實際的結果作比對,并分析可能引起這些不同的原因。這樣一來,大大加快了我們找到問題和解決問題的速度。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 红桥区| 特克斯县| 固原市| 得荣县| 南投县| 定南县| 板桥市| 穆棱市| 洛扎县| 丽江市| 湟中县| 高密市| 临江市| 龙江县| 藁城市| 横峰县| 连山| 开封市| 陈巴尔虎旗| 弥渡县| 荣昌县| 江达县| 武胜县| 北票市| 万载县| 泌阳县| 息烽县| 武邑县| 安新县| 固镇县| 广水市| 莱州市| 长春市| 灵台县| 晋宁县| 安平县| 德惠市| 汪清县| 新干县| 金溪县| 临朐县|