⑴ c語言調試技巧
小可根據親身經歷認為,要減少調試時間,首先是要使程序寫出來後語法錯誤少。要做到這些必須形成良好的習慣,一律做到按標准語法格式書寫程序,提高程序的通用性來適應不同的編譯器。比如用int main()而不是void main();用標准函數system("cls")而不是老式函數clrscr();多用system("pause")而不是getch();在寫程序時時刻保持語句的匹配,比如寫主函數main()後寫了左花括弧"{"馬上補上右花括弧"}",然後再在花括弧中添加語句而不是相反,以免最後遺忘了右花括弧"}",同理for()語句,while()語句,fopen()語句等的小括弧也是如此,先寫好左右小括弧()再在裡面加成分。養成每個語句的結尾都要加上分號;的習慣。再一個重要方面是數據的類型一定要對應,scanf()和printf()函數中變數的輸入輸出格式要和變數的定義類型一致,函數調用中的形參和實參類型要一一對應,要整型對整型,指針對指針,指針數組對指針數組。等等。
如果養成了好的習慣,寫出來的程序語法錯誤會減少一大半。
再就是程序的設計思路要正確清晰,要不然即使程序沒有語法錯誤,但結果不是需要的。這種情況往往需要很長時間才能找到問題所在。我就有幾次這樣的經歷,程序編譯可以通過,說明沒有語法錯誤,但是結果卻不對。總結的方法是在程序中適當的地方用輸出語句比如printf()把一些變數此刻的值顯示出來和理論上的值對照,判斷正誤。這樣就可以不斷縮小錯誤范圍,問題會較快解決。小可認為在編寫一個程序以前應先認真構思一番找出一種簡潔有效的編程演算法,然後動手再寫,這是避免此類錯誤的一個好辦法。
上面談了如何從源頭上減少錯誤。具體如何調試排錯,下面有詳盡介紹(13頁之多),小可就不啰嗦了。
http://www.huarw.com/program/C/c02/200511/4882.html
⑵ C語言調試步驟
一、在keil中調試c語言程序
1、打開我們的程序,點擊菜單欄右側的start/stopdebug..按鈕,進入調試模式,如下圖。
⑶ C語言調試程序時出現這種情況怎麼辦
看控制台的提示就知道了,成功0個,失敗1個,指的是編譯出錯,沒生成exe文件。看看是不是你的min()函數最後少寫了一句return 0;導致的。
更多C語言教程
⑷ c語言調試的問題
我的理解不知道對不對,是不是調試的時候程序運行到scanf就停止了,你不知道如何輸入內容?如果是這樣的話,調試的時候也會有DOS窗口,激活那個窗口,就像平時一樣輸入數字按回車,就可以了,程序會就會繼續向下運行。
如果是DOS窗口都不能輸入的話,還有兩個方法,但是這兩個方法都有一個問題就是必須確保scanf那句話是正確的。第一個直接賦值,直接把scanf那句話改為賦值語句,多測試幾次不同的數值,檢查出來的結果是一樣的。第二個方法,編譯器應該有變數賦值的功能(至少最近幾年的會有),這樣你直接選擇那個變數輸入你想要的數值就行了(具體操作不詳述,不同編譯器操作不同)。
以上應該能幫到你吧。
⑸ C語言調試時
這是因為,這是你的代碼調用了系統的dll中的代碼,而被調用的代碼不是debug版本,所以沒有包函調試信息在裡面。調試器試圖讀取這些代碼的調試信息時就只好報告沒找到了。
在debug時,在調用程序用到的每個dll時會檢查它是否包括調試信息。如果包括調試信息,在調試時可以利用,就可以單步跟蹤進去,某些系統dll是不包括調試信息的,所以會提示找不到匹配的符號信息,並不是說程序有什麼錯誤。
⑹ c語言 調試的時候
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int a,b,c;
char flag;
srand(NULL);
do
{
a=rand()%101;
b=rand()%101;
printf("%d+%d=?",a,b);
scanf("%d",&c);
if(c==a+b)
printf("good!\n");
else
printf("error!\t\t%d+%d=%d",a,b,a+b);
printf("\n\t\tcontinute? | Y(yes)\\N(no)\n");
scanf("\n%c",&flag);
if(flag=='Y'||flag=='y')
flag=0;
else flag=1;
}
while(!flag);
}
試一下,可以的
就希望給點分^_^
⑺ c語言的調試
1.首先看編譯能否通過,即看編譯輸出的內容,有語法錯誤要修改直到編譯通過:
===============================================比如:
1>------已啟動生成:項目:cio,配置:DebugWin32------
1>生成啟動時間為2010/11/2223:02:51。
1>InitializeBuildStatus:
1>正在創建「Debugcio.unsuccessfulbuild」,因為已指定「AlwaysCreate」。
1>ClCompile:
1>test.cpp
1>c:usersadministratordesktop est.cpp(6):warningC4018:「<」:有符號/無符號不匹配
1>c:usersadministratordesktop est.cpp(26):errorC2143:語法錯誤:缺少「;」(在「}」的前面)
1>
1>生成失敗。
1>
1>已用時間00:00:01.39
==========生成:成功0個,失敗1個,最新0個,跳過0個
2.整體測試一次看結果是否正確,不正確就開始在懷疑的地方添加斷點
===============================================比如一些FOR循環,一些關鍵值求出的步驟後面。
3.斷點添加之後開始編譯執行,程序停在斷點處之後,在VS2003以後的版本中可以用滑鼠移到變數上面查看它的值是不是預期的,然後點F11(逐語句)F10(逐過程)來一步一步觀察看變數變化過程。觀察變數更有效的方法就是添加監視,在變數上點右鍵-添加監視就可以方便觀察了。
4.總之,首先看邏輯是否正確,把自己想成一個只會一步一步運行的計算機,然後再逐步運行,方法和思維都很重要。
如圖:
⑻ C語言 為什麼調試結果窗口一閃即過
不知道你用的是哪個編譯器,但是我猜你應該是編的最簡單的控制台程序,那麼如果你的main函數是int型或其他類型,而最後又是由return返回,且return前沒有諸如從鍵盤讀入字元等的命令,那麼你的程序在執行完的時候會直接退出,所以會有一閃而過的情況,要想讓它停留,可以在return語句前添加一個按任意鍵退出的語句,最常用的有兩種方法:
1.
printf("\n按任意鍵繼續...");
getchar();
return 0;
2.
前麵包含stdio.h
sysytem(「PAUSE」);
return 0;
⑼ C語言 怎麼調試程序
一、在keil中調試c語言程序
1、打開我們的程序,點擊菜單欄右側的start/stopdebug..按鈕,進入調試模式,如下圖。
⑽ c語言程序老是調試時窗口一閃就沒有了
兩種方法,一是改程序,在結束前,請求輸入內容,如:
getchar(); 或是 調系統的 system("pause");
方法二,不改程序,改調用方法,不要直接雙擊exe文件,先開一個cmd窗口,切換目錄到你的程序所在位置,在命令行窗口裡,輸入程序名,回車,結果就一直留著,除非關閉了命令行窗口