跟我一起學windows初進階調試(1)

來源:互聯網
上載者:User

                   跟我一起學windows初進階調試之你為什麼要學調試

       本系列文章使用C/C++語言,vs內建調試器和windbg等其他相關調試工具,介紹windows下使用者態下的初進階調試,不涉及核心調試。

關於我

我不是專家,只是一個熱愛技術的程式猿。

寫本系列博文主要有以下三個目的:

   1.系統的學習相關調試技術。

   2.記錄學習曆程。

   3.交流調試技術。

   4.協助更多初學者。

適合人群:

   1.使用C/C++語言編寫過相關windows程式,希望學習相關調試技術的童鞋。

   2.熟悉IDE內建調試器調試,但對windbg不熟悉,希望使用windbg提高工作效率的童鞋。

   3.使用過windbg進行調試,但並未系統的學習過相關調試理論的童鞋。


     也許很多人會問調試還分為初級和進階調試嗎?在此我將初級調試和進階調試作以下分類:

     初級調試:使用IDE內建調試工具,如vc6.0或vs內建調試器,在開發過程中使用斷點進行簡單的單步跟蹤、單步調試。

     進階調試:使用windbg定位修複程式出現的各種複雜問題。如棧溢出,堆破壞、死結、資源流失等。

     之所以這樣區分並不是因為vs內建調試器不如windbg。而是因為二者有各自的適用範圍 。

                                       你為什麼要學調試

    有過一段時間編程經驗的程式員都明白,程式不可能一遍寫成。需要經過多次的修改、運行、再修改再運行...經過若干次的迭代之後才會交付或發布。而發布也並不意味著結束,因為在運行中也會發現各種bug,然後就是改bug->測試->引入新bug->再測試等等這一系列的迭代過程。對於工期緊張的軟體項目,後期常常由於現有bug無法被修複,而導致延期交付,客戶有意見,領導不滿意,損害了公司的聲譽。而擁有了軟體調試的相關技術後,各種bug再也不在難以攻克了。

     每每談起調試,聽到的更多的都是我使用vs內建的調試器已經足夠,為什麼還要學習什麼windbg?

     不得不承認vs內建調試器的可操作性要比windbg好的多。在代碼編寫階段,vs是不二選擇。相比之下windbg卻擁有眾多晦澀難懂的命令,介面也相對醜陋,可操作性差,而且使用前需要配置。但是對於事後調試(以後會介紹)和定位類似死結、資源流失、堆破壞等複雜問題,Windbg就大有用武之地。Windbg基於命令列,靈活且功能強大。尺有所短寸有所長,二者適用範圍不一樣。後面我們會遇到同時使用二者進行問題定位與分析的情況。

學習調試技術的好處:

     1. 將多方面知識融會貫通。

         軟體調試涉及作業系統、cpu、編譯原理等各個方面的知識,是電腦各個模組複雜互動的過程,學習調試不僅可以提高我們的調試技能,還能夠加深對電腦系統的理解,將各個學科的知識融會貫通。

     2. 應用到平時開發工作中去,提高軟體的可調試性。

        在軟體開發過程中有目的的添加一些方便調試的代碼,方便了以後的調試。提高了調試效率同時也方便以後的維護。

     3. 快速熟悉陌生代碼和系統底層。

         運用調試手段觀察、跟蹤和理解代碼的執行過程,加深對軟體執行流程和系統底層的理解。

     4. 提高工作效率。

         很多軟體項目的延期是跟無法定位與解決存在的bug有關。掌握了基本的調試方法和調試工具後,可以提高工作效率。原本需要很長時間才能定位、發現的問題,可以很快的解決。你當然不需要加班加點,軟體項目也可按期交付,提高客戶滿意度和公司競爭力。

      5. 提高個人核心競爭力,有利於個人長遠發展。

         由於軟體調試技術廣泛的關聯性,增加了學習軟體調試技術的難度,准入門檻高,同時該技術在短時間內難以發展和升級。軟體調試技術具有很好的穩定性,一朝學會終生受用。


     接觸過很多優秀的程式員,發現他們都很看中軟體調試。他們編寫的軟體在提交測試之前已經通過調試修複。對於測試發現的問題也能夠及時的發現問題的所在。因此在公司擁有很好的口碑。


初步計劃本系列文章分為初級篇、進階篇和進階篇。

 接下來的初級篇的幾篇文章將包括以下幾個方面的內容:

     1.介紹vs內建調試器的使用,並進行簡單調試。

     2.初次接觸windbg,簡要介紹windbg使用。

     3.使用windbg進行簡單的調試。

 

     初級篇和進階篇均面向實用,一切以可以應用到實際使用為出發點。不注重講解各種長篇大論的調試理論。隨著認識的不斷深入,進階篇將會對各種理論進行系統闡述。

    學習軟體調試是枯燥的,你必須一遍又一遍的去研讀調試理論。同時也是快樂的,我們享受攻克一個有一個難關後的欣喜。 在這個浮躁的時代,我們總是抱怨工資太少,房子太小,車子不好。可是抱怨之後情況仍不會有所改觀。改變現狀最好的辦法就是改變我們自己。靜下心去好好鑽研一些東西,提高自己的含金量。誰也不會虧待一個有真才實學的人。當然並不一定必須去鑽研調試技術,任何其他技術也一樣。

                                                                       2014.2.9於浙江杭州

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.