(三十二)單步調(diào)試技術(shù)

編譯錯誤與運行錯誤

  • 編譯錯誤:編譯器提示的錯誤,低級錯誤笑跛,語法有錯,根本無法生成exe文件

  • 運行錯誤:程序運行的結(jié)果與預(yù)期不一致聊品,說明程序不對飞蹂,存在bug,需要修改

    一般情況下翻屈,能復(fù)現(xiàn)的錯誤都是可以解決的

單步調(diào)試

單步調(diào)試就是在要調(diào)試的代碼段首行加斷點陈哑,走一步看一下結(jié)果,邊走邊觀察伸眶,直到發(fā)現(xiàn)有哪一步走錯了

在vs環(huán)境下惊窖,斷點F9,單步F10厘贼,(F10是逐過程stepover界酒,跳過函數(shù)具體執(zhí)行,F(xiàn)11是逐語句stepinto嘴秸,可以進(jìn)入函數(shù))開始調(diào)試F5毁欣,再按F5跳到下一個斷點,若無下一個斷點則退出調(diào)試岳掐。黃色箭頭表示即將執(zhí)行這條語句

//求和
#include<stdio.h>
int sum(int* buf,int n)
{
    int total = 0;
    for(int i=0;i<total;i++)
    {
        total+=buf[i];
    }
    return total;
}

int main()
{
    int buf[64];

    for(int i=0;i<64;i++)
    {
        buf[i]=i;
    }
    int result = sum(buf,64);
    printf("%d\n",result);
    return 0;
}

程序結(jié)果是零凭疮,說明程序有錯。利用單步調(diào)試發(fā)現(xiàn)sum函數(shù)寫錯了

監(jiān)視窗口可以單獨只查看某個變量的情況串述。內(nèi)存窗口輸入p可以看到指針p對應(yīng)的內(nèi)存执解,觀看變量a的內(nèi)存時輸入&a。a=0x12345678對應(yīng)的內(nèi)存為78 56 34 12共四個字節(jié)剖煌。

程序崩潰的原因分類

  • 一個變量未初化材鹦、未賦值,就讀取它的值耕姊。( 這屬于邏輯問題桶唐,往往是粗心大意的導(dǎo)致的 )

  • 函數(shù)棧溢出(1)定義了一個體積太大的局部變量(2)函數(shù)嵌套調(diào)用,層次過深(如無窮遞歸)

    int buf[1024*1024*16]; //這個變量體積太大茉兰,應(yīng)該用malloc或new來動態(tài)分配內(nèi)存
    
    //無窮的遞歸調(diào)用
    #include <stdio.h>
    #include <stdlib.h>
    void a();
    void b();
    void a()
    {
      printf("Calling a() ...\n");
      b();
    }
    void b()
    {
      printf("Calling b() ...\n");
      a();
    }
    int main()
    {
      a();
      return 0;
    }
    
  • 數(shù)組越界訪問

  • 指針的目標(biāo)對象不可用尤泽,為空指針,野指針(指針未賦值,已經(jīng)free/delete了卻還要用坯约,不恰當(dāng)?shù)闹羔槒?qiáng)制轉(zhuǎn)換要求)

//野指針:不恰當(dāng)?shù)膹?qiáng)制轉(zhuǎn)換
#include <stdio.h>
int main()
{
  int a = 10;
  double* p = (double*) &a;
  *p = 123.345; // 程序崩潰
  return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熊咽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闹丐,更是在濱河造成了極大的恐慌横殴,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卿拴,死亡現(xiàn)場離奇詭異衫仑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)堕花,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門捣炬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雕擂,“玉大人尚辑,你說我怎么就攤上這事员串。” “怎么了壕曼?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵苏研,是天一觀的道長。 經(jīng)常有香客問我腮郊,道長楣富,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任伴榔,我火速辦了婚禮,結(jié)果婚禮上庄萎,老公的妹妹穿的比我還像新娘踪少。我一直安慰自己,他們只是感情好糠涛,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布援奢。 她就那樣靜靜地躺著,像睡著了一般忍捡。 火紅的嫁衣襯著肌膚如雪集漾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天砸脊,我揣著相機(jī)與錄音具篇,去河邊找鬼。 笑死凌埂,一個胖子當(dāng)著我的面吹牛驱显,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼埃疫,長吁一口氣:“原來是場噩夢啊……” “哼伏恐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起栓霜,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翠桦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胳蛮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體销凑,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年鹰霍,在試婚紗的時候發(fā)現(xiàn)自己被綠了闻鉴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡茂洒,死狀恐怖孟岛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情督勺,我是刑警寧澤渠羞,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站智哀,受9級特大地震影響次询,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓷叫,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一屯吊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧摹菠,春花似錦盒卸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至煮寡,卻和暖如春虹蓄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背幸撕。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工薇组, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杈帐。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓体箕,卻偏偏與公主長得像专钉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子累铅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容