當前位置:首頁 » 編程語言 » c語言怎麼檢測

c語言怎麼檢測

發布時間: 2023-09-02 20:17:43

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】。

熱點內容
易手遙控連接密碼是多少 發布:2025-02-03 22:44:26 瀏覽:165
sql安裝程序配置伺服器失敗 發布:2025-02-03 22:44:25 瀏覽:585
可以寫腳本的點擊器 發布:2025-02-03 22:44:22 瀏覽:611
c演算法代碼 發布:2025-02-03 22:42:20 瀏覽:861
腳本貓 發布:2025-02-03 22:36:30 瀏覽:136
qt軟體如何反編譯 發布:2025-02-03 22:36:27 瀏覽:21
linux串口數據接收 發布:2025-02-03 22:33:11 瀏覽:552
戰雙封腳本嗎 發布:2025-02-03 22:32:14 瀏覽:444
可用內存存儲 發布:2025-02-03 22:28:05 瀏覽:72
郵箱登錄需要伺服器地址是啥 發布:2025-02-03 22:27:27 瀏覽:547