c語言怎麼檢測
㈠ c語言進階04-預防、檢測及消除bug
01
開發軟體不等於編碼
寫程序時會有"編碼-->測試-->調試"的習慣.很不幸,這是開發軟體的錯誤方法.專業的程序員會使用策略來預防、檢測及消除軟體bug.編碼不是在開發軟體.編碼的意思是在文本編輯器中輸入語句.編碼只是開發軟體的小部分.開發軟體需要編程前、編程中、編程後的許多步驟.下面分著講解.
02
編程前
1、了解需求.
2、考慮可能的輸入和期望的輸出.
3、識別出有效但非期望的輸入和正確的輸出.這是對於開發可靠的軟體而言是一個關鍵點.
4、識別出無效輸入並找到檢測它們的方法.要注意即使輸入無效的數據時,程序也不能奔潰.
5、想出解決辦法,並記錄.
6、設計程序,可以節省大量的時間.
03
編程中
1、若想正確且更快的完成程序, 就寫更多的代碼.為了滿足一個要求而把代碼放到一個更大的程序之前,寫一個小程序來測試你的解決方案.即單元測試.
2、使用自動縮進的文本編輯器可以幫你檢查代碼是否對齊,可以節省寶貴的時間.
3、在運行之前一行一行的讀代碼.可以幫你找到通過測試很難發現的問題.
4、自己想一些測試例子. 若自己不知道自己寫的代碼,則計算機也不知道.
5、盡量使用函數來重構代碼,避免復制代碼.
6、要用版本控制系統(這不是廢話嗎).
7、編譯時,警告信息也不要放過.
04
編程後
不要依賴測試,測試只會告訴你程序沒有正常工作,不會告訴你程序真的在正常運行.很可能測試用例沒有涵蓋所有可能的方案.通過測試用例涵蓋所有可能的方案是很困難的.
05
常見錯誤
未初始化變數: 一些人認為所有的變數都會自動初始化為0,C語言中不會初始化.通過測試很難測試出來.
錯誤數據類型: 需要理解並正確地使用類型,編程語言的趨勢是讓數據類型更有限制性,防止犯意外的錯誤.
06
後執行式和互動式調試
調試一個程序分為幾個階段, 舉個列子:
1、從一個文件中讀取一些整數;
2、把整數排序;
3、把排好序的整數存到另一個文件中;
單元測試: 在上面三部整合之前測試每一部分叫作單元測試.
對於單元測試,經常需要寫一些額外的代碼,作為單獨部分的"驅動".調試可能是互動式或後執行式的.若程序會花費幾個小時,你就不會想要用互動式來調試這個程序了.相反,你會想要程序列印出調試信息,即日誌.
對互動式調試而言列印調試信息存在多個問題:
1、需要插入代碼來列印調試信息.多數情況下,調試信息必須在隨後被移除,因為此信息不應該出現在最終的代碼和它的輸出中.
2、如果有很少的信息,那麼就會缺少足夠的信息幫助你判斷哪裡錯了.
3、如果信息太多,可以忽略不相關的信息,獲得好信息是很困難的.
4、最糟糕的是,問題可能會出現在意想不到的地方,而那裡卻並未插入調試信息.結果就是添加越來越多的調試信息.這是很耗時的.
07
生產代碼與測試代碼分離
自己應該能檢測出自身bug的程序.編寫程序之前就應該考慮編寫測試代碼.這是普遍的做法,這個稱為 測試驅動的開發. 開發的時候需要將測試代碼和開發代碼分開,這樣可以隨意刪除測試代碼.
㈡ C語言如何檢測點擊的按鈕
通常很多情況下,會有這樣的事情,就是:
我們在運行某些程序的時候,發現按鈕置灰了,比如購買版權或者輸入序列號才能夠獲得訪問許可權。某個按鈕才允許點擊。
其實所有的這些東西都是 別的人或者公司利用一些編程語言調用windows的函數,實現的。所以如果我們也能調用windows的函數,那麼我們就能夠執行一些按鈕或者某些東西背後的函數。
自己的mfc還暫時 用不了,不過 可以 試試這個。
調出這個界面,看到有一個置灰的設置按鈕。我們可以試著調用這個後面的函數。
/*如何調出來?【在win7環境下】
打開控制面板
點擊滑鼠。*/
然後利用vs的工具中的spy++ x64。
進入查找窗口。
拖住這個到剛剛滑鼠的那個置灰的按鈕上面。就可以得到一個句柄。
句柄【在我理解,就是一個話把子,怎麼解釋,就是,別人說一件事兒,你得順著往下說才能把話接下來,然後完成你想說的東西。在程序裡面,執行到這里,有這樣一個句柄,允許我們說話了,我們就從這一點開始,順著往下說,往往就能得到我們想要的結果】
所以得到了句柄之後。我們可以新建一個工程。
#include <windows.h>
int main(){
SendMessage(0x001607E6,WM_LBUTTONDOWN,0,0);
SendMessage(0x001607E6,WM_LBUTTONUP,0,0);
return 0;
}
//在HWND的第一個參數裡面輸入剛剛的句柄。
//猜測 第二個參數 是 WindowManager_LeftButtonDown,就是窗口管理器左鍵按鈕點下。
//然後左鍵按鈕彈起。
就強制的往剛剛不能執行的函數裡面發送了一個信息。前面的引文介紹說,這就是調用了windows底層的一些函數,如果按鈕可以點擊,則滑鼠點擊,按鈕按下,當需要注冊的時候,或者需要序列號的時候我們並沒有,就不能點擊。但是當我們給他發送一條消息以後,是不是問題就解決了。
㈢ C語言怎麼檢查對錯
用微軟的VC6.0就可以,點編譯,就是那個小嘆號,如果是語法錯誤,就會提示你錯誤,在下面的框里提示你哪行錯誤,編譯不會通過,即你的程序無法運行。
然而這是很簡單的,最難的是邏輯錯誤,即編譯可以通過,而運行結果是錯誤的,和你預想的不一樣,而這種錯誤很難查找,只能用分步式運行,一行一行跟著程序執行看結果和過程,才能檢測出來。通常程序員最難解決的錯誤就是這種邏輯錯誤。
㈣ c語言編程怎麼測試程序的對錯
自己好好看看程序吧,別依靠編譯器,編譯器不是萬能的!
1.語法錯誤
在編譯前瀏覽程序的源代碼看看是否有明顯的錯誤。
可以查看由編譯器發現的錯誤。
發現錯誤——從第一個開始修改,每次修改1~2個,然後重現編譯。
發現的錯誤位置可能比真正的錯誤要滯後一行。
2.語義錯誤
比較程序實際得到的結果和預期結果。
跟蹤程序,執行步驟——可用EXCEL(語句行×變數值)
在程序的幾個關鍵點處加入額外的printf()語句以監視所選變數的值。
或用調試器。
㈤ c語言,有向圖里如何檢測是否有環
1、為其定義一個名稱,就叫【StackEmpty】。