.NET程序調試技巧(一):快速定位異常的一些方法_.Net教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:淺談ASP.NET中多層架構
      Asp.net的多層架構主要是為了解決數(shù)據(jù)層,邏輯層,表示層等之間的關系。我的做法是這樣的:首先建立一個DataCore的基類。基類里面封裝了一些低層的數(shù)據(jù)庫的基本操作,比如說數(shù)據(jù)庫聯(lián)接,調用存儲過程等等。 很多人對開發(fā)多層應用程序感到一定的困難。來看一個例子:對

         這篇文章主要介紹了.NET程序調試技巧(一):快速定位異常的一些方法,本文講解了定位本機異常、在客戶環(huán)境定位.net程序異常兩方面的內容,需要的朋友可以參考下

        作為一個程序員,解BUG是我們工作中常做的工作,甚至可以說解決問題能力是一個人工作能力的重要體現(xiàn)。因為這體現(xiàn)了一個程序員的技術水平、技術深度、經(jīng)驗等等。

        那么在我們解決BUG的過程中,定位問題是非常重要的。有句話叫"發(fā)現(xiàn)問題是解決問題的一半。

        本文講述就快速定位異常(專指.NET程序異常)的方法。包括在本機定位異常,在客戶環(huán)境定位.net程序異常,在客戶環(huán)境定位SilverLight異常。

        一:定位本機異常

        在我們本機定位異常很容易。假設我們都是使用的的VisualStudio,那么只需要在調試->異常菜單中將Common Langeuage Runtime Exception(CLR異常)勾選。如下圖:

      .NET程序調試技巧(一):快速定位異常的一些方法

        在上面的圖片中可以發(fā)現(xiàn)有5種類型的異常,例如c++異常、win32異常等等。對于.NET程序來說我們只關注CLR異常。

        接下來進行調試,當自己的程序代碼中有異常的時候,VS就會自動定位到異常的位置。

        我們可以看到異常的詳細信息,并且可在調用堆棧窗口中看到 程序的堆棧信息。在堆棧信息中我們可以看到在哪個類、哪個函數(shù)中出的錯,如下圖:

      .NET程序調試技巧(一):快速定位異常的一些方法

        調試程序有兩種方式,一種是用VS直接啟動程序,另一種是附加到進程。

      .NET程序調試技巧(一):快速定位異常的一些方法

        附加到進程的時候,程序類型不要選錯了,我使用的是.net4.0 所以程序類型選擇的是 托管(4.0版)代碼。

        另外附加到進程有個快捷鍵是 Ctrl+Alt+P。

        但是如果異常不是你的代碼中拋出的,那么如何定位呢?

        可以打開 調試 菜單下面的 選項和設置,將 啟用"僅我的代碼" 這一項取消勾選。那么別人代碼中的異常就可以拋出了。

      .NET程序調試技巧(一):快速定位異常的一些方法

        二:在客戶環(huán)境定位 .net 程序異常:

        我們的程序最后都會運行在客戶的環(huán)境中,客戶環(huán)境上不會有VS這樣的開發(fā)工具,那么怎么辦呢?

        我們可以使用一個很小巧的命令行調試工具Mdbg.exe,這個工具是安裝VS的時候附帶安裝的,僅能調試.net托管代碼。

        Mdbg.exe其實有很多功能,不過本文只講它定位異常的功能,后續(xù)文章會講使用Mdbg.exe單步調試的方法。

        Mdbg.exe命令詳細介紹可以 輸入 h(help) 或者? 名來查看,也可以看下面的鏈接,

        http://msdn.microsoft.com/zh-cn/ms229861(vs.80).aspx#

        根據(jù)CLR版本的不用,Mdbg.exe也是有多個版本的。

        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\Mdbg.exe用于調試

        CLR2.0(對應net2.0,3.0,3.5)程序。

        C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\Mdbg.exe用于調試CLR4.0程序(對用.net4.0)。

        另外Mdbg.exe有一個依賴DLL 叫做MdbgCore.dll。我們可以直接將相應版本的Mdbg.exe和MdbgCore.dll拷貝到客戶機器上使用。

        沒有安裝VS的朋友可以拷貝我自己封裝的一個安裝包 http://xiazai.jb51.net/201506/other/U8DebugSetup.rar,這里面除了Mdbg.exe還有一些其他組件我們后面的文章會用到。

        默認會安裝在 C:\Program Files\U8Debug。

        Mdbg.exe的使用方法很加簡,雙擊打開它,然后輸入 a(attach , 顯示附加的進程),回車,這時會列表所有可以附加的進程。

      .NET程序調試技巧(一):快速定位異常的一些方法

        PID 表示進程標識,

        輸入a 11940 附件到 ConsoleApplication2.ex示例程序。

        這時程序會中斷執(zhí)行,我們在這個時機可以做一些設置。讓程序在遇到異常時自動中斷。

        輸入命令 ca (catch)查看當前調試器遇到哪些事件會中斷。

      .NET程序調試技巧(一):快速定位異常的一些方法

        可以看到 Exception對應的是Igonre all exception ,也就是忽略所有異常,發(fā)生異常時不會中斷。

        輸入命令 ca ex 這樣調試器遇到異常時就會中斷了。

        再次輸入ca 命令會看到 Exception對應的值已經(jīng)變?yōu)镾top on all exception了。這時遇到任何異常都會中斷了。

      .NET程序調試技巧(一):快速定位異常的一些方法

        輸入命令 g 讓程序繼續(xù)執(zhí)行。

        當遇到異常時會自動中斷到調試器,如下圖:

      .NET程序調試技巧(一):快速定位異常的一些方法

        入命令 w(where,程序運行到哪里了) 可以查看異常堆棧信息

      .NET程序調試技巧(一):快速定位異常的一些方法

        三:在客戶環(huán)境定位SilverLight異常

        如果客戶的silverlight應用服務器部署在外網(wǎng),那么我們可以直接用瀏覽器訪問該silverlight站點,然后用VS附加到瀏覽器進程來調試。

      .NET程序調試技巧(一):快速定位異常的一些方法

        調試方法比調試普通.net程序一樣。

        但是如果,客戶的Silverlight服務器是部署在內網(wǎng),那么你只能在客戶機器上調試了。

        并且Mdbg.exe也幫不了你了,它不能調試Silverlight程序。

        我們還有另一個著名的調試工具Windbg。體積大概有不到20M,很容易安裝到客戶機,安裝包大家可以到網(wǎng)上自己下載。windbg分為32位和64位兩個版本,

        調試32位的程序請使用32位windbg,反之則要使用64位的windbg,具體為什么我們不用深究,記住了就可以了。

        相比Mdbg.exe的小巧實用,Windbg顯然強大的多,但是使用起來也復雜一些。

        Windbg其實可以調試很多種類型的程序,例如普通.NET程序,c++等。但是本文只講解使用windbg定位異常的方法。

      分享:ASP.NET緩存處理類實例
      本文實例講述了ASP.NET緩存處理類。分享給大家供大家參考。具體如下: ASP.NET 緩存處理類。 用法: Just copy this code into a new class file (.cs) and add it to your ASP .NET website. One thing to keep in mind is that data stored in ASP .NET Cache can be

      共2頁上一頁12下一頁
      來源:模板無憂//所屬分類:.Net教程/更新時間:2015-06-17
      相關.Net教程