中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET中怎么對異常進行快速定位

發布時間:2020-12-09 16:47:51 來源:億速云 閱讀:156 作者:Leah 欄目:開發技術

.NET中怎么對異常進行快速定位?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

一:定位本機異常

在我們本機定位異常很容易。假設我們都是使用的的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定位異常的方法。

首先我們使用IE瀏覽器打開silverlight應用程序,然后打開windbg附件到IE進程來調試。附加進程的方式可以通過File菜單下的Attach to a process或者使用F6快捷鍵。

 .NET中怎么對異常進行快速定位

附件進程后 程序會中斷到調試器,這個時候我們需要做兩個設置。

一個是 設置程序發生異常時讓其中斷到調試器,設置方法是打開debug菜單下的Event Filter,將CLR異常設置其為enable。

 .NET中怎么對異常進行快速定位

另外需要加載調試器擴展,使用過windbg的朋友都知道調試.net程序需要加載一個調試器擴展sos.dll。這個sos.dll也有一個Silverlight版本的。

位置在silverlight的安裝目錄 C:\Program Files (x86)\Microsoft Silverlight\5.1.10411.0\sos.dll。

我們再command窗口中輸入 .load C:\Program Files (x86)\Microsoft Silverlight\5.1.10411.0\sos.dll 來加載它。

之后輸入命令 g 來回復程序的執行。當發生異常時就會中斷到調試器中。

發生異常是我們可以使用!pe(print exception) 來查看異常信息。如下圖:

 .NET中怎么對異常進行快速定位

如果想查看堆棧信息的話可以輸入命令 !clrstack

.NET中怎么對異常進行快速定位

看完上述內容,你們掌握.NET中怎么對異常進行快速定位的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ne
AI

龙门县| 荔波县| 德安县| 昌都县| 磐石市| 黎川县| 门头沟区| 红河县| 仁化县| 昆山市| 潼南县| 汶上县| 澄江县| 长春市| 孟州市| 体育| 法库县| 三台县| 聂荣县| 绿春县| 叶城县| 衡南县| 奉贤区| 黑山县| 陕西省| 微山县| 沙河市| 美姑县| 乌兰浩特市| 称多县| 新泰市| 策勒县| 济南市| 沾益县| 深水埗区| 洪湖市| 潼关县| 洪泽县| 新乡市| 申扎县| 鲁甸县|