任何举动之前,先思考,思考,再思考
任何舉動之前,先思考,思考,再思考——《Windows用戶態程序高效排錯》之讀書筆記
之所以會讀《Windows用戶態程序高效排錯》這本書,是因為某個賣存儲的技術大拿不停地給我丟case,一些雖然看起來很容易,但是設計細節部分的case讓人崩潰。在這段時間陸續重新開始使用netmon、windbg等工具來幫助排錯。無奈,到處托人幫忙,正好有位同鄉MVP手頭有這本書,死臉皮要過來看了。很好很強大!雖然對匯編,c,c++等語言是一竅不通,硬著頭皮看,也學到了一些非常有用的排錯方法。
任何舉動之前,先思考,思考,再思考。
01.相信事實,不要相信經驗
很多時候,看到某工程師基于自己的經驗,對case做一些無聊的猜測,并最終導致問題沒解決或者惡化的案例真的很多。以前我是這樣,現在稍微好一點了,但是依然還是會站在自己的經驗上來處理問題。以后要減少這方面的問題。(同時這里感謝江蘇的sun大哥,總是挑我的錯呢,雖然被挑到的時候我總是會臉紅一下,你看我不到看我不到!)
任何case,只要客戶端報錯了,那么它就是事實存在的。如果你因為經驗陷入在定向思維上,很難去找到問題根本并解決。
02.詳細觀察問題發生的過程,對任何線索保持敏感
數字,比如2的n次方可以解釋很多問題。
某個選項,比如SSL?dns解析?
03.用對比的方法來尋求問題的根源
讓問題復現,并與正常狀態進行對比。
04.用cpu的節奏和方法來理解整個過程
慢慢想象整個過程的來龍去脈,然后慢慢演示,前推后推10步,一般也就能找到問題的癥結。
05.文檔不是萬能的,沒有文檔是萬萬不能的
很多時候,文檔可以幫你了解過程,但是很多文檔都是有瑕疵甚至有絕對錯誤的時候。千萬不要因為沒有復現文檔的狀態而灰心,因為這意味著你又找到了一個新的case!多么有挑戰啊!
06.堅實的基礎知識可以讓你事半功倍!
不要總是想著速成,如果都是速成,還要GTSC干嘛?還要IT support部門干嘛?你硬著頭皮看點非常基礎,非常沒有成就感的書,看2本后,你就會發現,這個世界的case很多都是因為最基本的問題沒有弄清楚而導致的。
07.不要局限在頭疼醫頭,要全面的了解是否這個case可以更完美的解決
一般因為客戶的要求,我僅僅協助他解決了當前的問題。可是如果當前的修改極有可能引發了未來可能預見到的大問題,你是否還會選擇這個解決方案呢?當然了,如果你是IT公司,希望賺取更多的服務費,那就是另外一個說法了。
日常排錯的checklist
1)補丁打全了么?
2)MS support查了么?有對應的補丁可以打么?
3)問題在同一臺機器上是偶爾發生,還是總是可以重現
4)問題在不同的機器能重現么?
5)能用類似的軟件測試該問題么?
6)錯誤截屏了么?
7)重現問題的步驟是什么?有特殊的地方么?
8)有辦法可以緩解或者暫時解決么?
9)有防火墻,防病毒軟件么?
10)排錯是在生產環境還是在測試環境中進行?
11)用到數據庫了嗎?什么類型的?
12)問題和負載有關系么?
13)網絡環境如何?nat?
14)有用群集么?NLB?
15)在domain中么?
16)非domain環境是否在server和client端闖將相同名和密碼的賬戶進行測試?
17)最近有安裝新補丁,或者新軟件么?
18)除了問題本身,系統有什么異常?內存,cpu,網絡?
19)系統日志有什么顯示什么問題么?
20)嘗試更換一個程序賬戶測試?比如另外一個管理員賬戶?
以上是排錯思維的一些筆記。
--------插花----------
這本書我沒有能力全看懂,太多的程序設計的問題了。但是這本書可以讓了解如何使用windbg來幫你解決問題。書很便宜,僅35RMB,考慮到這本書是2007年出的,現在至少是8折。
----此書還在硬啃中------
轉自:http://xunyangit.spaces.live.com/blog/cns!F934535AFC3723BA!839.entry
轉載于:https://www.cnblogs.com/bvbook/archive/2009/09/21/1571331.html
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的任何举动之前,先思考,思考,再思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wget for windows
- 下一篇: 对虚拟目录的操作(转)