當前位置:首頁 » 編程語言 » c語言程序跟蹤調試

c語言程序跟蹤調試

發布時間: 2022-11-12 11:54:04

c語言中什麼叫做單步調試,步驟是什麼

單步調試是指程序開發中,為了找到程序的bug,通常採用的一種調試手段,一步一步跟蹤程序執行的流程,根據變數的值,找到錯誤的原因。

解決這個問題的方法如下:

1、首先需要設置斷點的那一行代碼的最前面點擊下,就會出現一個紅色的圓球,代表設置斷點成功,下圖一共設置了4個斷點。

⑵ C語言怎麼調試程序

CTRL+F9調試
Alt+F5看結果

或者在程序結尾加入getch();
按Ctrl+F9就可以調試然後直接看結果

⑶ C語言程序中,要檢測一個數據是否在變化著,應該怎麼實現

方法很多種:1)單步調試跟蹤變數值。
2)如上所說,用一個暫存變數保存它的值,比較。
3)在想查看它的值的地方printf();
c語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程序設計中備受青睞。C語言編譯器普遍存在於各種不同的操作系統中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了眾多後來的編程語言,例如C++、Objective-C、Java、C#等。
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%~20%。

⑷ 設計和調試c語言程序要經過哪四個階段

分析需求,設計程序,編輯程序,調試程序,這四個階段。

⑸ 求成都信息工程大學今年最新的c語言程序跟蹤調試題答案

有兩種方式:第一種:選「文件」,然後選「C/C++SourceFile」。第二種:選「工程」,然後選「Win32ConsoleApplication」,完成後,然後再按第一種方式建立文件。

⑹ 如何在visual c++ 6.0下調試c語言

1.VC調試功能簡介
當一個C源程序編輯完成之後,你可以用上節講的方法進行編譯、運行。如果程序無編譯錯誤,但無運行結果,或運行結果有誤時,你就需要調用VC的編譯調試工具來調試你的程序,以便找出出錯的原因,從而達到正確的運行結果。
VC為調試C程序提供了多種工具和多組方法,常用的方法有菜單法、工具欄法和功能鍵法。實際上,這三種方法是相似或相同的,只是根據用戶的熟悉程度和習慣用法選擇其中之一,來完成你的調試過程。作者習慣使用功能鍵法,因為使用功能鍵既方便操作,又能節省調試程序的時間,使調試過程在較短的時間內完成。下面結合調試工具來介紹以上立法。
在VC窗口下的菜單欄和工具欄的空白處,點右鍵激活快捷菜單,選擇「編譯」菜單項,這時VC窗口就出現了調試工具欄,

調試工具欄中的工具可分為兩部分:控製程序運行工具和設置觀察窗口工具。
① 對於控製程序運行工具,從左到右的常用按鈕、功能鍵及功能說明依次是:
●Restart 重新執行程序,功能鍵是 Ctrl+Shift+F5。無論C源程序處於任何狀態(編輯、運行、調試),按下此按鈕均可使程序從編譯開始,逐步進入調試程序狀態。
●Stop Debugging 停止程序調試,功能鍵是Shift+F5。當調試過程處於跟蹤程序執行的狀態時,按下此按鈕,將停止調試程序,返回編輯狀態。編輯狀態下此按鈕無效。
● Show Next Statement 指示當前程序運行的語句行。
● Step Into 單步運行並且可進入函數內部運行,功能鍵是F11。程序在調試過程中,按下此按鈕可單步跟蹤程序運行,與Stp Over按鈕不同的是,該功能可進入函數內部,繼續函數內部的語句行跟蹤。
注意:使用此按鈕時,當 位於有庫函數調用的語句行,不用F11功能,以免進入庫函數的匯編程序塊中,取而代的是F10功能鍵。
● Step Over 單步運行程序,功能鍵是F10。本按鈕的功能類似於F11,但它不進入函數內部,它將每一條語句看作一步,包括函數調用語句。
●Step Out 從當前函數中退出,功能鍵是Shift+F11。當程序運行至某個函數內部時,按下此按鈕後,調試狀態即從函數內部退出,返回到調用該函數的主函數的當前語句。
●Run to Cursor 運行到當前游標位置,功能鍵是Ctrl+F10。當程序處於調試狀態時,為了跳過某程序段,可預先將游標定位在某語句行上,按下此按鈕,即可使程序直接運行到當前游標位置,從而節省了時間,加快了調試程序的步驟。
② 對於設置觀察窗口工具,其功能主要是為配合程序跟蹤運行,設置一些觀察點,以便定位出錯的位置,從而找到出錯的原因。
● QuickWatch 快速觀察表達式的值,功能鍵是Shift+F9。當程序運行到某個關鍵語句行時,你可以按下該按鈕,即在屏幕上顯示「QuickWatch」窗口,其中:E表達式下拉列表框中的a,是由用戶輸入的當前源程序中的一個數組名;V 當前值列表中的「Name」和「Value」列的值就是a數組中所有元素的元素名和元素值。

●Watch 設置觀察點。當用戶按下該按鈕,屏幕顯示觀察窗口,其中的「Name」列和「Value」列為空。這時,用戶可以在Name列中輸入用戶待觀察的觀察點,即程序中某個變數的名字,然後回車,在Value列就顯示出該變數的當前值。觀察點可以設置多個,多個觀察點還可以分別放在不同的觀察標簽內(Watch1、Watch2…)。

● Variables 變數列表,當按下此按鈕,屏幕顯示如所示的變數列表窗口。窗口中的「Name」列和「Value」列中列出了當前函數中的所有變數名和相應的值,其中:簡單變數只顯示變數名和它的值;數組名前面有一個「 」符號,Value列顯示它的地址值。

●Registers 寄存器列表,按下此按鈕,屏幕上顯示的寄存器窗口,窗口中列出了所有寄存器的內容。

●Memory 內存列表,按下此按鈕,屏幕上顯示所示的內存列表窗口,其中「A地址」文本框中顯示的是內存的當前地址值,下面的列表框中顯示的是從指定地址開始的所有內存區域的值,??表示其值不確定(沒有賦確定的值)。用戶可以在程序運行時,在「Watch」窗口中找到某個變數的地址或數組名的值(數組名本身是一個地址量),然後,將該值輸出「A地址」的文本框中,在內存列表區立即就能看到它的存儲值,不過該值是一個十六進制的數,並且,一個整型數占據四個位元組的存儲區域。詳細內容可參考下面的例子。

圖13
2.使用VC調試C程序的方法
以下程序是全國計算機等級考試二級C語言的一道上機改錯題,請考生調試該程序,使其能按要求輸出正確的結果。
① 程序功能說明
給定程序C003.C中函數fun的功能是:從s所指字元串中,找出t所指子串的個數作為函數值返回。
例如,當s所指字元串中的內容為:"abcdabfab",t所指字元串的內容為:"ab",則函數返回整數3。
請改正程序中的錯誤,使它能得出正確的結果。
注意: 不要改動main函數, 不得增行或刪行, 也不得更改程序的結構!
② 源程序
#define N 80
int fun(char *s, char *t)
{
int n=0; char *p , *r;
while ( *s )
{
p=s;
r=p;
while(*r)
if(*r==*p)
{
r++;
p++;
}
else break;
if(*r = O)
n++;
s++;
}
return n;
}
main()
{
char a[N],b[N]; int m;
printf("Enter string a : ");
gets(a);
printf("Enter substring b : ");
gets( b );
m=fun(a, b);
printf(" The result is : m=%d ",m);
}
③ 調試過程
a) 啟動VC系統,編輯輸出源程序,並以c003.c命名,結果如圖14所示。

圖14
b) 按功能鍵Ctrl+F11編譯源程序,編譯顯示結果如圖15所示。

圖15
編譯結果告訴我們,程序中存在一個錯誤,兩個警告。其中:警告的原因都是因為系統函數沒有包含頭文件stdio.h,錯誤的原因是第16行的標識符(identifierf)』O』沒有定義。需要說明的是,這里的錯誤很特別:從程序字面上看,這里的O好象是數字0,而一般考生也分辨不出或不會認為是O。但是,既然編譯系統給出錯誤信息,就應該根據該錯誤信息來修改程序。在源程序前面增加一行文件包含命令「#include 」,再把字母O改寫成字元0(這是缺乏編程經驗的考生的共同作法),再一次編譯程序,結果告訴我們程序編譯成功。
然後,按Ctrl+F5功能鍵,運行程序,在提示輸入的屏幕上輸入題目要求的兩個字元串,屏幕顯示如圖16所示,結果再一次告訴考生:程序結果有錯,即程序中存在邏輯錯誤。

圖16
c) 接下來,我們對程序作運一步調試,以找出程序出錯的真正原因。
調試一個存在邏輯錯誤的程序,首先要確定程序中可能出現錯誤的大概位置。根據題意說明可確定錯誤存在於函數fun中。根據這一判斷,我們先將游標定位在fun函數的第一條可執行的語句行上,然後,按下功能鍵Ctrl+F10,讓程序運行到游標位置。注意:這個過程中間要進入輸入屏幕狀態,等待輸入a和b字元串,請考生按要求輸入,用回車符確認。當看到任務欄的VC圖標在閃爍,請將窗口切換到VC狀態,如圖17所示:

圖17
接下來,邊按功能鍵F10,邊觀察屏幕下方變數(Variables)子窗口中p字元串和r字元串的變化,同時還要注意VC窗口左邊的黃色指點針箭頭。一直重復以上過程,你會發現,黃色箭頭始終沒有指向「n++;」語句。我們要找的第一個邏輯錯誤點就是if語句後面的表達式。按照正常的情況,if後面的表達式應該是關系表達式或邏輯表達式,而這里的表達式是賦值表達式,正確的語句應該是:
if(*r == 0)
n++;
修改之後再按Ctrl+F5運行程序,程序結果如圖18所示。
為了利用VC的調試功能和手段,更好地觀察其它相關變數的變化規律,在上述過程中,還可以在VC的觀察(Watch)窗口輸入其它變數,在跟蹤程序執行過程中觀察其變化。

圖18
這種結果也不對,這是第一次錯誤結果的另一個極端:從m=0變到m=10。
如何查找其中的原因?不仿再回顧一下剛才在跟蹤程序運行時,變數(Variables)窗口中的p和r字元串的值的變化情況,再結合程序中r字元串的作用,不難看出,p和r應該是不同的字元串,且p字元串是指向s字元串,而r字元串則應該指向t字元串。正確的結果應該是:將語句「r=p;」改成「r=t;」。

⑺ c語言實驗 單步跟蹤調試程序 我每次執行到下圖就進行不下去了 求大神解答

當箭頭指向 scanf printf 等系統庫函數 時你需要用step over (單步跳過) 而不可以使用step into
單步進入(單步進入將進入被調用函數的源碼內部, 但是 它不給你系統函數源碼的,雖然他可以給你看一小部分 CRT源碼,但是你得完整安裝並且清楚其安裝路徑)

⑻ C語言調試步驟

一、在keil中調試c語言程序

1、打開我們的程序,點擊菜單欄右側的start/stopdebug..按鈕,進入調試模式,如下圖。

⑼ c語言中的上機調試運行是什麼意思

就是C語言代碼,編寫完成後,在機器上使用編譯器編譯代碼,生成可運行的程序,然後使用調試器對該程序進行調試運行。「調試運行」的意思就是在調試器的幫助下運行程序,可以設置斷點,可以單步運行,跟蹤程序的運行過程。調試運行就是這個意思。

熱點內容
原神過主線任務腳本 發布:2025-01-12 06:34:51 瀏覽:513
醫保電子密碼在哪裡找到 發布:2025-01-12 06:34:38 瀏覽:347
安卓手機有網卻不能使用怎麼辦 發布:2025-01-12 06:25:20 瀏覽:212
arm存儲器映射 發布:2025-01-12 06:25:12 瀏覽:250
安卓系統個人字典有什麼用 發布:2025-01-12 06:13:37 瀏覽:928
geventpython安裝 發布:2025-01-12 06:13:34 瀏覽:339
放鬆解壓助睡眠直播 發布:2025-01-12 06:13:00 瀏覽:829
車載wince和安卓哪個好用 發布:2025-01-12 05:58:18 瀏覽:840
vb6遍歷文件夾 發布:2025-01-12 05:58:13 瀏覽:365
c在C語言中代表什麼 發布:2025-01-12 05:52:59 瀏覽:48