6.6 通過(guò)調(diào)試查看變量的值
下面我們來(lái)動(dòng)手完成一個(gè)小小的實(shí)驗(yàn),通過(guò)調(diào)試,觀察變量的值。
我們?cè)诖a中聲明兩個(gè)int 變量,并分別初始化為5和-5。然后我們通過(guò)CB提供的調(diào)試手段,可以查看到程序運(yùn)行時(shí),這兩個(gè)變量的十進(jìn)制值和十六進(jìn)制值。
首先新建一個(gè)控制臺(tái)工程。加入以下黑體部分(就一行):
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int aaaa = 5, bbbbb = -5;
return 0;
}
//---------------------------------------------------------------------------
沒(méi)有我們熟悉的的那一行:
getchar();
所以,如果全速運(yùn)行這個(gè)程序,將只是DOS窗口一閃而過(guò)。不過(guò)今天我們將通過(guò)設(shè)置斷點(diǎn),來(lái)使用程序在我們需要的地兒停下來(lái)。
設(shè)置斷點(diǎn):最常用的調(diào)試方法之一,使用程序在運(yùn)行時(shí),暫停在某一代碼位置,
在CB里,設(shè)置斷點(diǎn)的方法是在某一行代碼上按F5或在行首欄內(nèi)單擊鼠標(biāo)。
如下圖:
在上圖中,我們?cè)趓eturn 0;這一行上設(shè)置斷點(diǎn)。斷點(diǎn)所在行將被CB以紅色顯示。
接著,運(yùn)行程序(F9),程序?qū)⒃跀帱c(diǎn)處停下來(lái)。
(請(qǐng)注意兩張圖的不同,前面的圖是運(yùn)行之前,后面這張是運(yùn)行中,左邊的箭頭表示運(yùn)行運(yùn)行到哪一行)
當(dāng)程序停在斷點(diǎn)的時(shí),我們可以觀察當(dāng)前代碼片段內(nèi),可見的變量。觀察變量的方法很多種,這里我們學(xué)習(xí)使用Debug Inspector (調(diào)試期檢視),來(lái)全面觀察一個(gè)變量。
以下是調(diào)出觀察某一變量的 Debug Inspector 窗口的方法:
先確保代碼窗口是活動(dòng)窗口。(用鼠標(biāo)點(diǎn)一下代碼窗口)
按下Ctrl鍵,然后將鼠標(biāo)挪到變量 aaaa 上面,你會(huì)發(fā)現(xiàn)代碼中的aaaa變藍(lán),并且出現(xiàn)下劃線,效果如網(wǎng)頁(yè)中的超鏈接,而鼠標(biāo)也變成了小手狀點(diǎn)擊鼠標(biāo),將出現(xiàn)變量aaaa的檢視窗口:
筆者使用的操作系統(tǒng)為WindowsXP,窗口的外觀與Win9X有所不同)
從該窗口,我可以看到:
aaaa :變量名
int :變量的數(shù)據(jù)類型
0012FF88:變量的內(nèi)存地址,請(qǐng)參看5.2 變量與內(nèi)存地址;地址總是使用十六進(jìn)制表達(dá)
5 : 這是變量的值,即aaaa = 5;
0x00000005 :同樣是變量的值,但采用16進(jìn)制表示。因?yàn)槭莍nt類型,所以占用4字節(jié)。
首先先關(guān)閉前面的用于觀察變量aaaa的Debug Inspector窗口。
現(xiàn)在,我們用同樣的方法來(lái)觀察變量bbbb,它的值為-5,負(fù)數(shù)在計(jì)算機(jī)中使用補(bǔ)碼表示。
正如我們所想,-5的補(bǔ)碼為:0xFFFFFFFB。
再按一次F9,程序?qū)臄帱c(diǎn)繼續(xù)運(yùn)行,然后結(jié)束。
下面我們來(lái)動(dòng)手完成一個(gè)小小的實(shí)驗(yàn),通過(guò)調(diào)試,觀察變量的值。
我們?cè)诖a中聲明兩個(gè)int 變量,并分別初始化為5和-5。然后我們通過(guò)CB提供的調(diào)試手段,可以查看到程序運(yùn)行時(shí),這兩個(gè)變量的十進(jìn)制值和十六進(jìn)制值。
首先新建一個(gè)控制臺(tái)工程。加入以下黑體部分(就一行):
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int aaaa = 5, bbbbb = -5;
return 0;
}
//---------------------------------------------------------------------------
沒(méi)有我們熟悉的的那一行:
getchar();
所以,如果全速運(yùn)行這個(gè)程序,將只是DOS窗口一閃而過(guò)。不過(guò)今天我們將通過(guò)設(shè)置斷點(diǎn),來(lái)使用程序在我們需要的地兒停下來(lái)。
設(shè)置斷點(diǎn):最常用的調(diào)試方法之一,使用程序在運(yùn)行時(shí),暫停在某一代碼位置,
在CB里,設(shè)置斷點(diǎn)的方法是在某一行代碼上按F5或在行首欄內(nèi)單擊鼠標(biāo)。
如下圖:
在上圖中,我們?cè)趓eturn 0;這一行上設(shè)置斷點(diǎn)。斷點(diǎn)所在行將被CB以紅色顯示。
接著,運(yùn)行程序(F9),程序?qū)⒃跀帱c(diǎn)處停下來(lái)。
(請(qǐng)注意兩張圖的不同,前面的圖是運(yùn)行之前,后面這張是運(yùn)行中,左邊的箭頭表示運(yùn)行運(yùn)行到哪一行)
當(dāng)程序停在斷點(diǎn)的時(shí),我們可以觀察當(dāng)前代碼片段內(nèi),可見的變量。觀察變量的方法很多種,這里我們學(xué)習(xí)使用Debug Inspector (調(diào)試期檢視),來(lái)全面觀察一個(gè)變量。
以下是調(diào)出觀察某一變量的 Debug Inspector 窗口的方法:
先確保代碼窗口是活動(dòng)窗口。(用鼠標(biāo)點(diǎn)一下代碼窗口)
按下Ctrl鍵,然后將鼠標(biāo)挪到變量 aaaa 上面,你會(huì)發(fā)現(xiàn)代碼中的aaaa變藍(lán),并且出現(xiàn)下劃線,效果如網(wǎng)頁(yè)中的超鏈接,而鼠標(biāo)也變成了小手狀點(diǎn)擊鼠標(biāo),將出現(xiàn)變量aaaa的檢視窗口:
筆者使用的操作系統(tǒng)為WindowsXP,窗口的外觀與Win9X有所不同)
從該窗口,我可以看到:
aaaa :變量名
int :變量的數(shù)據(jù)類型
0012FF88:變量的內(nèi)存地址,請(qǐng)參看5.2 變量與內(nèi)存地址;地址總是使用十六進(jìn)制表達(dá)
5 : 這是變量的值,即aaaa = 5;
0x00000005 :同樣是變量的值,但采用16進(jìn)制表示。因?yàn)槭莍nt類型,所以占用4字節(jié)。
首先先關(guān)閉前面的用于觀察變量aaaa的Debug Inspector窗口。
現(xiàn)在,我們用同樣的方法來(lái)觀察變量bbbb,它的值為-5,負(fù)數(shù)在計(jì)算機(jī)中使用補(bǔ)碼表示。
正如我們所想,-5的補(bǔ)碼為:0xFFFFFFFB。
再按一次F9,程序?qū)臄帱c(diǎn)繼續(xù)運(yùn)行,然后結(jié)束。