国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

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

2024-07-10 12:53:11
字體:
來源:轉載
供稿:網友

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

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

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

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

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

  一:定位本機異常

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

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

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

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

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

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

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

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

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

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

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

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

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

  二:在客戶環境定位 .net 程序異常:

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

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

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

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

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

  根據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示例程序。

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

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

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

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

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

  再次輸入ca 命令會看到 Exception對應的值已經變為Stop on all exception了。這時遇到任何異常都會中斷了。

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

  輸入命令 g 讓程序繼續執行。

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

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

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

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

  三:在客戶環境定位SilverLight異常

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

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

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

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

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

  我們還有另一個著名的調試工具Windbg。體積大概有不到20M,很容易安裝到客戶機,安裝包大家可以到網上自己下載。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下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泗水县| 星子县| 柯坪县| 团风县| 衡阳市| 贡山| 钟山县| 新绛县| 宿松县| 霞浦县| 湖北省| 襄汾县| 新沂市| 康保县| 务川| 正宁县| 田东县| 任丘市| 阜康市| 腾冲县| 西峡县| 信丰县| 温泉县| 江阴市| 兰考县| 正蓝旗| 资兴市| 英德市| 古浪县| 健康| 潞城市| 浙江省| 枞阳县| 乌兰浩特市| 江津市| 濮阳县| 海伦市| 固原市| 新乡市| 上思县| 水城县|