當前位置:首頁 » 編程語言 » c語言程序調試點哪裡
擴展閱讀
魅族16xs與16x哪個配置好 2022-08-20 04:51:16
存儲卡座壞了怎麼辦 2022-08-20 04:49:20

c語言程序調試點哪裡

發布時間: 2022-07-05 17:26:41

c語言調試步驟

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

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

⑵ c語言程序調試

調試程序一般應經過以下幾個步驟:

1先進行人工檢查,即靜態檢查。在寫好一個程序以後,不要匆匆忙忙上機,而應對紙面上的程序進行人工檢查。這一步是十分重要的,它能發現程序設計人員由於疏忽而造成的多數錯誤。而這一步驟往往容易被人忽視。有人總希望把一切推給計算機系統去做,但這樣就會多佔用機器時間,作為一個程序人員應當養成嚴謹的科學作風,每一步都要嚴格把關,不把問題留給後面的程序。

為了更有效地進行人工檢查,所編的程序應注意力求做到以下幾點:應當採用結構化程序方法編程,以增加可讀性;2盡可能多加註釋,以幫助理解每段程序的作用;3在編寫復雜的程序時不要將全部語句都寫在main函數中,而要多利用函數,用一個函數來實現一個單獨的功能。這樣既易於閱讀也便於調試,各函數之間除用參數傳遞數據這一渠道以外,數據間盡量少出現耦合關系,便於分別檢查和處理。

2在人工檢查無誤後,才可以上機調試。通過上機發現錯誤稱動態檢查。在編譯時給出語法錯誤的信息,可以根據提示的信息具體找出程序中出錯之處並改正之。應當注意的是有時提示的出錯並不是真正出錯的行,如果在提示出錯的行上找不到錯誤的話應當到上一行再找。有時提示出錯的類型並非絕對准確,由於出錯的情況繁多各種錯誤互有關聯,因止要善於分析,找出真正的錯誤,而不要只從字面意義上找出錯信息,鑽牛角尖。

如果系統提示的出錯信息多,應當從上到下一一改正。有時顯示出一大片出錯信息往往使人感到問題嚴重,無從下手。其實可能只有一二個錯誤。例如,對使用的變數未定義,編譯時就會對所有含該變數的語句發出出錯信息;有的是少了「}」或多了「}」有的是書寫語句時忘記寫「;」或是全形的「;」了,只要加上一個變數定義,或填加「};」就所有錯誤都消除了。

3在改正語法錯誤後,程序經過連接就得到可執行的目標程序。運行程序,輸入程序所需數據,就可得到運行結果。應當對運行結果作分析。看它是否符合要求。有的初學者看到運行結果就認為沒問題了,不作認真分析,這是危險的。

有時,數據比較復雜,難以立即判斷結果是否正確。可以事先考慮好一批「試驗數據」,輸入這些數據可以得出容易判斷正確與否的結果。可以在計算的輸出結果的程序地方加入一段輸出到串口的程序,利用串口窗口可以方便看到結果的,比模擬的都好和直觀。例如,if語句有兩個分支,有可能在流程經過其中一個分支時結果正確,而經過其它一個分支時結果不對等。必須考慮周全。

事實上,當程序復雜時很難把所有的可能方案全部都試到,選擇典型的情況作試驗即可。

4 運行結果不對,大多屬於邏輯錯誤。對這類錯誤往往需要仔細檢查和分析才能發現。可以採用以下辦法:

1 將程序與流程圖仔細對照,如果流程圖是正確的話,程序寫錯了,是很容易發現的。例如,復合語句忘記寫花括弧,只要一對照流程圖就能很快發現。

2 如果實在找不到錯誤,可以採用「分段檢查」的方法。在程序不同的位置設幾個printf函數語句,輸出有關變數的值,往下檢查。直到找到在哪一段中數據不對為止。這時就已經把錯誤局限在這一段中了。不斷減小「查錯區」,就可能發現錯誤所在。

3 也可以用「條件編譯」命令進行程序調試(在程序調試階段,若干printf函數語句就要進行編譯並執行。當調試完畢,這些語句不要再編譯了,也不再被執行了)。這種方法可以不必一一去printf函數語句,以提高效率。

4 如果在程序中沒有發現問題,就要檢查流程圖有無錯誤,即演算法有無問題,如有則改正之,接著修改程序。

5 有的系統還提供debug(調試)工具,跟蹤流程並給出相應信息,使用更為方便,如KEILC51里的調試運行就很好用的,可以在命令的窗口輸入程序中需要的數據和開關量、中斷、I/O口的電平等來方便完成程序的運行,使用時要先打開Options for Target'Target1'(工程菜單里的目標『TARGET1'屬性)-----點DEBUG----選中左邊use Simulator\load Application at sta\Go till main;按確定後退出到編輯畫面,要先對源程序進行編譯後沒有錯誤才可以按主菜單上的調試按鈕,進行調試的,F10為子程序運行式的單步、F11為單步調試;具體使用可以看本站提供的51單片機應用系統開發實例一書中的Dscope foe Windows一節。可以下載本站上中文版的KIELC51就直觀了。

總之,程序調試是一項細致深入的工作,需要下功夫,動腦子,善於累積經驗。在程序調試過程中往往反映出一個人的水平,經驗和科學態度。希望讀者能給以足夠的重視。上機調試程序的目的決不 是為了「驗證程序的正確」,而是「掌握調試的方法和技術」,不要一直依賴模擬器來解決,要學會自己找問題,這樣慢慢自己就會寫出錯誤較少的實用的程序,站長就沒有模擬器的哦,靠KEILC51里的軟體模擬就解決了。
請採納。

⑶ c語言程序如何調試

TC,我就不說了,調試並不華麗.
常見的vs2005, 把裡面調試相關的功能學會.
監視窗口用法,堆棧窗口的用法是必然要知道的.

⑷ C語言,如何調試程序,地址要怎麼看篩法求素數

1、觀察數組

如果數組是內部變數,直接在環境窗口中就可以查看到。

否則,在環境窗口(ALT+4)中,

對數組a,單擊滑鼠右鍵,選擇「在內存中查看」,

在內存窗口(ALT+5)中,

即可以自動跳轉數組a的起始地址,

裡面的值,就是數組的值。

2、內存窗口中,地址後面的值,就是數組的值,

每行共有8個位元組,共256位元組(即長度),即共有32行。

3、這個有沒有遇到,不知道跟系統有沒有關系。我的系統win8 64位

#include<stdio.h>
intmain()
{
intn,i,j,t=1,p=0;
scanf("%d",&n);
inta[n];
a[0]=0;
for(i=1;i<n;i++)
{
a[i]=1;
}
if(n>=2)
{
for(i=1;i<n;i++)
{
if(a[i]==1)
{
p++;
for(j=(i+1);j<=n;j=(i+1)*t,t++)
{
a[j-1]=0;
}
}
}
}
if(n<2)
{
printf("%d",0);
}
if(n>=2)
{
printf("%d",p);
}
return1;
}

⑸ C語言 怎麼調試程序

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

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

⑹ C語言程序調試

main函數用int返回值比較好,不過也只是警告;
case 1/-2部分少了break;
缺少do,while上面的花括弧沒有對應的正括弧;
while的判斷條件char不能和字元串比較,這是指針和整型比較了,應該用單引號,如果用雙引號,則判斷會錯誤;
?:句式有問題,最後一個"paper"少一個:段,最後一個判斷其實也沒必要,模3得到的整數加1,只能是1/2/3,這個判斷是廢的。
如果補充了do,那麼while後面應增加";"分號結束。

最終語法和邏輯都正確的應該是(當然其實並不夠嚴謹,換行等排版也很難看):
#include "stdio.h"
#include "time.h"
#include "stdlib.h"

int main()
{
int computer,user;
char c;
do
{
srand ((unsigned)time(NULL));
printf("Starting!");
printf("Please input 1.Stone,2.Scissor,3.Paper");
scanf("%d",&user);
computer=rand()%3+1;
printf("Computer output is %s\n\n",computer==1?"Stone":computer==2?"Scissor":computer==3?"Paper":"unknow");
switch (computer-user)
{
case 0:
printf("Draw!\n\n");
break;
case 1:
case -2:
printf("computer win!\n\n");
break;
case -1:
case 2:
printf("You win!\n\n");
}
printf("Continue the game please press Y,press other key will exit");
getchar();
c=getchar();
}
while (c=='y'||c=='Y');

printf("It's all ready exit");
return 0;
}

⑺ vc++6.0里c語言編程如何調試

就是插入一個斷點,快捷鍵是f9。這回運行程序時只用按f5,那麼程序運行到有斷點的地方就會停止。用f10可以單步跟蹤,就是一步一步的看程序怎麼運行的。如果遇到函數調用的地方,你用f11就可以進入函數里。在調試的時候你可以看見各個變數的值,也可以用shift+f9來設置跟蹤那些變數的值。這樣就可以更方便的跟蹤調試程序了。

⑻ 關於c語言程序調試

scanf("%f,%f,f",&a,&b,&c);//輸入3個數
1.上面這一行第三個%f你寫成f了
void bijiao( float *x,float* y)//兩個數值的比較子函數
{
float t;
if((*x)<(*y))
{
t=*x;
*x=*y;
*y=t;
}

}
2.上面的這個函數要改成這個樣子!

⑼ 急急急!!計算機二級c語言程序設計題怎麼編譯調試,先點哪個再點哪個,求大神帶截圖,越詳細越好!!

第七步:點擊圖中的叉結束調試。



程序填空,程序改錯。就直接看程序的錯誤。

⑽ C語言怎麼調試阿

你是編譯的時候出錯還是執行的時候出錯?

如果是編譯的時候出錯,看它提示你哪行出錯, 雙擊提示就到那行了

如果是執行的時候出錯,你要先設定一個斷點,

你在程序一開始找一行代碼按F9,這樣就設定了一個斷點,
然後按F5執行程序,程序執行到斷點會停下來,然後你只要一步一步的按F10,看代碼執行到哪裡出錯就行了

下面是你可以參考的一些調試按鍵:
F5 開始調試
F9 下斷點
F10 跳步執行
F11 單步執行
Shift+F5 結束調試