今天看的調(diào)試的這一章主要是針對多線程程序的調(diào)試。多線程程序運行的不確定性,使其調(diào)試起來就像抓蝴蝶一樣,你捉摸不透它駐足的位置。
書中給了一些建議和方法:
一是有計劃地對付錯誤。
對應用程序展開適當?shù)恼{(diào)試,應該是遠在你使用調(diào)試器之前就開始了。多多使用ASSERT調(diào)試措施。(ASSERT背后的概念是安全和速度之間的交換。程序運行因此運行得比較慢,但是Debug Build的制造就是為了調(diào)試,所以可以理解)在每一個你的假設之處做檢驗工作。進入一個函數(shù)時,確認所有狀態(tài)。不要只是檢查指針是否合法;如果可能,檢查一下指針所指的結(jié)構(gòu)中的數(shù)據(jù)是否一致。
二是Bench Testing
其實這種方法就是先撇開多線程的環(huán)境,測試程序邏輯的正確性。如果OK了,然后再考慮與線程相關(guān)的東西。
三是線程對話框
這里主要討論了對一個特定的線程如何調(diào)試,方法是掛起所有的線程——除了我們關(guān)注的那個。書中介紹的方法在vs 2005我沒有找到。
四是日志記錄
這里主要是在控制臺窗口顯示一些運行信息,我們可以使用printf等函數(shù)在控制臺輸出一些信息來查看線程的運行次序。
五是內(nèi)存記號
使用內(nèi)存記號的好處就是降低彼此干擾的可能性。但是也要注意它不是同步操作,可能會因為兩個線程的同時寫入引來問題。
六是硬件調(diào)試寄存器
前面的這六種方法我也只用過三種,有一些還真是第一次見到。不過不怕下次搞不定問題的時候可以拿來進行嘗試,來抓一抓隱藏在程序中的“臭蟲們”。
成功消除多線程程序的“臭蟲”,作者說需要具備三種素養(yǎng):決心、耐心、創(chuàng)造力。同時也不要蠻干,要采用科學的方法:觀察、預測、測試。
總結(jié)一下:借助方法,觀察現(xiàn)象,大膽預測,勇敢嘗試,完備測試。
項目中也碰到了多線程的使用。未來可能多線程的使用會越來越多,不能停留在完成功能和任務上,應該多思考多測試。避免多線程的不可確定性帶來的一些困擾。
學習書籍:《Win32 多線程程序設計》侯捷譯
posted on 2009-08-21 17:19
Sandy 閱讀(1803)
評論(2) 編輯 收藏 引用 所屬分類:
windows學習