内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

C/C++程序的斷點(diǎn)調(diào)試-MicrosoftVisualStudio-創(chuàng)新互聯(lián)

本文以Microsoft Visual Studio為例,簡述C/C++程序斷點(diǎn)調(diào)試的基本方法和過程。其它的IDE環(huán)境,大同小異。

目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、永城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

本文引用自作者編寫的下述圖書; 本文允許以個(gè)人學(xué)習(xí)、教學(xué)等目的引用、講授或轉(zhuǎn)載,但需要注明原作者"海洋餅干叔
叔";本文不允許以紙質(zhì)及電子出版為目的進(jìn)行抄摘或改編。
1.《Python編程基礎(chǔ)及應(yīng)用》,陳波,劉慧君,高等教育出版社。免費(fèi)授課視頻 Python編程基礎(chǔ)及應(yīng)用
2.《Python編程基礎(chǔ)及應(yīng)用實(shí)驗(yàn)教程》, 陳波,熊心志,張全和,劉慧君,趙恒軍,高等教育出版社Python編程基礎(chǔ)及應(yīng)用實(shí)驗(yàn)教程
3. 《簡明C及C++語言教程》,陳波,待出版書稿。免費(fèi)授課視頻

1. 簡介

在程序有BUG/缺陷,需要修復(fù)時(shí),斷點(diǎn)調(diào)試是發(fā)現(xiàn)缺陷的重要方法。對于初學(xué)者而言,斷點(diǎn)調(diào)試還有另外一個(gè)用途:幫助理解程序背后的邏輯。

本文以Microsoft Visual Studio為例,簡述C/C++程序斷點(diǎn)調(diào)試的基本方法和過程。其它的IDE環(huán)境,大同小異。

在進(jìn)行后續(xù)調(diào)試試驗(yàn)前,需要先對Microsoft Visual Studio的C/C++編譯開發(fā)環(huán)境進(jìn)行安裝和配置。詳細(xì)過程請參見下述鏈接:http://codelearn.club/2022/11/vs/

2. 程序代碼

在Microsoft Visual Studio中創(chuàng)建一個(gè)Windows控制臺應(yīng)用項(xiàng)目,項(xiàng)目名稱為DebugExample,然后將DebugExample.cpp中代碼修改如下(復(fù)制粘接):

//Project - DebugExample
#include#includebool isPrime(int n) { //函數(shù)的定義
    if (n<=1)
        return false;
    for (int i=2;iprintf("Try to find all prime number(<=10):\n");

    int iFound = 0;       //發(fā)現(xiàn)的質(zhì)數(shù)個(gè)數(shù)
    for (int i=2;
         i<=10;
         i++)
    {if (!isPrime(i))
            continue;
        iFound++;
        printf("%d, ",i);
    }

    printf("\n%d prime numbers been found.",iFound);
    return 0;
}

在這里插入圖片描述
上述程序的用途在于找出2 ~ 10之間的全部質(zhì)數(shù)并打印出來。請讀者注意第19 ~ 21行,for循環(huán)的初始化語句,測試表達(dá)式,更新表達(dá)式故意分作了三行,以便于觀察。

3. 斷點(diǎn)

在這里插入圖片描述
在第18行代碼的行號左邊單擊鼠標(biāo),便會(huì)出現(xiàn)如圖所示的紅色斷點(diǎn)(break point),在相同位置再次單擊,斷點(diǎn)便會(huì)消失??梢越o同一段程序添加多個(gè)斷點(diǎn)。

4.調(diào)試

在這里插入圖片描述
在打好斷點(diǎn)后,選擇菜單調(diào)試-開始調(diào)試。

在這里插入圖片描述
與正常的程序運(yùn)行不動(dòng),程序并沒有“一口氣”從頭執(zhí)行到尾,而是暫停在了第18行的斷點(diǎn)處。圖中的黃色箭頭表明程序的當(dāng)前執(zhí)行點(diǎn),準(zhǔn)確地說,箭頭所指的行是接下來準(zhǔn)備執(zhí)行的代碼行。

在窗口的左下角,自動(dòng)窗口中可以看到程序在當(dāng)前執(zhí)行階段的局部變量的名稱及當(dāng)前值。可以看到,此時(shí)有iFound變量存在,其值為0。

注意:此時(shí)iFound的0值是不確定的,事實(shí)上,0到iFound的賦值尚未執(zhí)行。
在這里插入圖片描述
在調(diào)試菜單中,可以看到諸多調(diào)試選項(xiàng),其中常用的有:逐語句,逐過程,跳出。在調(diào)試過程中,讀者既可以使用菜單項(xiàng),也可以使用快捷鍵,或者工具條中的工具按鈕來發(fā)出調(diào)試命令。
在這里插入圖片描述
點(diǎn)擊逐語句(F11),可以看到第18行被執(zhí)行,黃色箭頭指向第19行。此時(shí),for循環(huán)內(nèi)的局部變量i出現(xiàn)在下方列表中。請讀者注意此時(shí)i的當(dāng)前值為690,而不是2,因?yàn)閒or循環(huán)的初始化語句尚未執(zhí)行。

注意:在變量沒有被初始化前,其值是不確定的,所以讀者真實(shí)調(diào)試時(shí),得到的值很可能不是690。
在這里插入圖片描述
再次點(diǎn)擊逐語句(F11),第19行被執(zhí)行,可見變量列表中的i值變成了2。黃色箭頭來到了第20行,這是for循環(huán)的條件判斷表達(dá)式。
在這里插入圖片描述
繼續(xù)按下F11,for循環(huán)在進(jìn)行了條件判斷后,準(zhǔn)備執(zhí)行循環(huán)體,黃色箭頭來到第23行。

第23行涉及一次函數(shù)調(diào)用,如果操作者希望觀察isPrime( )函數(shù)內(nèi)部的執(zhí)行過程,應(yīng)按F11。如果操作者不關(guān)心isPrime( )內(nèi)部的執(zhí)行過程,只關(guān)心23行的總體執(zhí)行結(jié)果,則按逐過程(F10)。本次,我們按逐語句(F11)。
在這里插入圖片描述
在這里插入圖片描述
連按兩次F11后,我們進(jìn)入到了isPrime( )函數(shù)內(nèi)部,黃色箭頭指向第6行。對于isPrime( )函數(shù)而言,當(dāng)前其局部變量僅有1個(gè),即函數(shù)的形式參數(shù)n。該參數(shù)的值應(yīng)由調(diào)用者傳遞進(jìn)來。在下方的列表中,我們看到該值為2。
在這里插入圖片描述

一直按F11,直到isPrime()返回,由于2是質(zhì)數(shù),所以isPrime()函數(shù)返回真(見下方列表)。
在這里插入圖片描述
再次按下F11, 由于第23行不是質(zhì)數(shù)的條件不成立,第24行不會(huì)被執(zhí)行,黃色箭頭略過了第24行,指向了第25行。
在這里插入圖片描述
再次按下F11,黃色箭頭來到第26行,可見由于第25的執(zhí)行,iFound由0變1。
在這里插入圖片描述
一直按**逐過程(F10)**進(jìn)行循環(huán),直到i = 4且黃色箭頭指向第23行。
在這里插入圖片描述
本次我們選擇不進(jìn)入isPrime()函數(shù),再次按下逐過程(F10)。由于i=4不是質(zhì)數(shù),因此第23行的條件成立,黃色箭頭跳轉(zhuǎn)到第24行的continue語句。

根據(jù)continue的語義,其將略過本輪循環(huán)的剩余語句(第25 ~ 26行),直接嘗試下一輪循環(huán)。
在這里插入圖片描述
按下逐語句(F11),可以看到,continue直接略過了第25 ~ 26行的剩余循環(huán)代碼,直接跳到了for循環(huán)的更新表達(dá)式,如圖中紅色箭頭所示。
在這里插入圖片描述
再次按下F11,可見for循環(huán)在更新表達(dá)式執(zhí)行后再次來到了循環(huán)測試表達(dá)式(第20行),如果測試通過,將執(zhí)行循環(huán)體,否則循環(huán)結(jié)束。

5.觀察輸出

在這里插入圖片描述
在程序調(diào)試過程中,可以隨時(shí)通過Alt+Tab組合鍵或者點(diǎn)擊Windows任務(wù)欄圖標(biāo)切換至TERMINAL(終端),該終端中展示了程序當(dāng)前執(zhí)行階段的全部輸出。如果程序在執(zhí)行過程中需要讀取輸入,也應(yīng)在其中錄入。

可以看到,2,3兩個(gè)質(zhì)數(shù)已被找出,4是合數(shù)被略過,正準(zhǔn)備考察整數(shù)5。

6. 去除斷點(diǎn)

如果調(diào)試的目的已達(dá)成,準(zhǔn)備放棄調(diào)試,可以再次單擊紅色斷點(diǎn)將其取消,如下圖(第18行左側(cè)紅框處):
在這里插入圖片描述
在這里插入圖片描述
此時(shí),可以選擇調(diào)試-繼續(xù)(F5),在沒有斷點(diǎn)的情況下將程序執(zhí)行完;也可以選停止調(diào)試,強(qiáng)行中止程序的執(zhí)行。

7. 繼續(xù)執(zhí)行

取消斷點(diǎn)后,我們選擇了繼續(xù)執(zhí)行。程序執(zhí)行完成后,IDE中與調(diào)試相關(guān)的箭頭,局部變量列表等均消失不見,恢復(fù)至常規(guī)編輯界面。
在這里插入圖片描述
在終端里,我們看到程序的全部執(zhí)行結(jié)果。

為了幫助更多的年輕朋友們學(xué)好編程,作者在B站上開了兩門免費(fèi)的網(wǎng)課,一門零基礎(chǔ)講Python,一門零基礎(chǔ)C和C++一起學(xué),拿走不謝!

簡潔的C及C++
由編程界擅長教書,教書界特能編程的海洋餅干叔叔打造
Python編程基礎(chǔ)及應(yīng)用
由編程界擅長教書,教書界特能編程的海洋餅干叔叔打造

如果你覺得紙質(zhì)書看起來更順手,目前Python有兩本,C和C++在出版過程中。

Python編程基礎(chǔ)及應(yīng)用

Python編程基礎(chǔ)及應(yīng)用實(shí)驗(yàn)教程
在這里插入圖片描述

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:C/C++程序的斷點(diǎn)調(diào)試-MicrosoftVisualStudio-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://www.rwnh.cn/article6/csdjig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、App開發(fā)App設(shè)計(jì)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
马边| 高阳县| 化隆| 怀化市| 科尔| 广宗县| 连江县| 蓬莱市| 盘山县| 安宁市| 资源县| 景东| 茌平县| 苏尼特左旗| 济南市| 昭苏县| 剑河县| 遂平县| 南安市| 方山县| 左权县| 濮阳市| 福建省| 乌苏市| 松阳县| 通海县| 蕲春县| 三门峡市| 文化| 确山县| 万荣县| 安徽省| 怀仁县| 桃园县| 容城县| 永济市| 南陵县| 五台县| 沙湾县| 正安县| 岑溪市|