西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

.NET調(diào)試擴(kuò)展包SOSEX.DLL

官方完整版
  • .NET調(diào)試擴(kuò)展包SOSEX.DLL官方完整版
  • 軟件大小:928KB
  • 更新時(shí)間:2014-10-17 10:36
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國(guó)產(chǎn)軟件 / 免費(fèi)軟件 / 編程控件
  • 軟件等級(jí):4級(jí)
  • 應(yīng)用平臺(tái):WinAll, Win7
  • 官方網(wǎng)站:http://www.stevestechspot.com/
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

本類精品

軟件介紹

SOS.DLL、SOSEX.DLL這兩個(gè)就是用來對(duì).NET程序在Windows調(diào)試工具中起到翻譯作用的調(diào)試器擴(kuò)展。簡(jiǎn)單講就是,這兩個(gè)組件是.NET項(xiàng)目組專門開發(fā)出來用來對(duì).NET應(yīng)用程序進(jìn)行方便調(diào)試用的,當(dāng)然不用這兩個(gè)擴(kuò)展也能調(diào)試.NET程序,只不過就會(huì)很困難,會(huì)被很多細(xì)節(jié)束縛住。有了這個(gè)調(diào)試擴(kuò)展之后,我們就可以讓原生Windows調(diào)試器正確的翻譯出.NET相關(guān)概念。

圖1:(Windows調(diào)試工具執(zhí)行流程)

所有對(duì).NET程序發(fā)起的調(diào)試會(huì)話都要經(jīng)過.NET調(diào)試擴(kuò)展組件進(jìn)行翻譯才行,也就是要使用.NET調(diào)試擴(kuò)展的調(diào)試命令來調(diào)試.NET程序。上圖中,我們?nèi)绻胝{(diào)試.NET程序就需要將.NET調(diào)試擴(kuò)展組件加載到Windows調(diào)試工具中去,然后才能方便在Windows調(diào)試工具中使用。

.NET調(diào)試擴(kuò)展包,SOS.DLL、SOSEX.DLL:

.NET調(diào)試擴(kuò)展包分為兩個(gè),一個(gè)是SOS.DLL,該擴(kuò)展包是.NET平臺(tái)的一部分,屬于官方版本。而SOSEX.DLL是微軟的一名叫“Steve Johnson”軟件工程師開發(fā),屬于個(gè)人維護(hù)的,用來增強(qiáng)SOS.DLL功能的,在SOSEX.DLL有很多功能比較強(qiáng)大的擴(kuò)展命令。

具體的幫助文檔可以查看該工程師的博客來了解詳情。這兩個(gè)版本用來調(diào)試不同環(huán)境的程序的,如果你的程序是運(yùn)行在32位環(huán)境下,就用32位的SOSEX,同理,用在64位下就用64位SOSEX。

而SOS.DLL擴(kuò)展包是跟著.NETFramework一起安裝的,地址位于:C:\Windows\Microsoft.NET\Framework\v4.0.30319。如果你是64位系統(tǒng)的話地址就是:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319。在這兩個(gè)地址下面都可以找到SOS.dll文件,不同的目錄下對(duì)應(yīng)于調(diào)試不同機(jī)器類型的.NET程序。

有了這兩個(gè)擴(kuò)展包之后就可以在WinDbg中對(duì).NET程序進(jìn)行分析了,具體使用我們后面會(huì)介紹。

2.3.調(diào)試系統(tǒng)的基本流程及架構(gòu)(.NETDAC概念、mscordacwks.dll)

有一個(gè)很重要的原理我覺得很有必要講一下,就是.NETDAC概念。

其實(shí).NETDAC也就是.NET Data Access .NET數(shù)據(jù)訪問層,這個(gè)是專門用來提供給SOS.DLL\SOSEXDLL或者其他調(diào)試擴(kuò)展包使用的,所有的調(diào)試擴(kuò)展組件必須通過這個(gè)DAC才能訪問到.NET運(yùn)行時(shí)的數(shù)據(jù),所以在初次使用SOS的時(shí)候會(huì)經(jīng)常碰見加載錯(cuò)誤的mscordacwks.dll文件,此文件就是DAC的物理文件。

這個(gè)文件和SOS擴(kuò)展文件一樣,都有這不同的版本,當(dāng)加載不同類型的.NET程序時(shí)會(huì)使用到不同版本的mscordacwks.dll文件,當(dāng)然大部分情況下此文件時(shí)自動(dòng)加載的,只有出現(xiàn)你分析的文件與生成調(diào)試文件的環(huán)境不一致時(shí)才會(huì)出現(xiàn)頭疼的問題。

圖5:(mscordacwks.dll位置)

當(dāng)你知道這個(gè)組件是工作于此位置時(shí),當(dāng)出現(xiàn)跟它相關(guān)的錯(cuò)誤提示時(shí)你就不需要擔(dān)心了,無非就是文件加載的位置或者版本不匹配而已。

VisualStudio中集成擴(kuò)展調(diào)試:

SOS擴(kuò)展也是可以和VisualStudio進(jìn)行集成的,這樣真的方便了我們調(diào)試一些性能要求比較高的程序,當(dāng)程序運(yùn)行一段時(shí)間后我們用VS附加到進(jìn)程,然后查看一些重要的對(duì)象數(shù)據(jù),但是此時(shí)我們看不到.NET運(yùn)行時(shí)的一些數(shù)據(jù),比如:對(duì)象的代齡,托管堆的大小,線程池的任務(wù)等。通過集成SOS擴(kuò)展會(huì)讓我們對(duì)程序的運(yùn)行時(shí)有了一個(gè)更加方便的跟蹤。

圖10:(打開本地代碼調(diào)試)

設(shè)置斷點(diǎn),然后在”即時(shí)窗口“(調(diào)試->窗口->即時(shí))中加載擴(kuò)展SOS.DLL。

圖11:(在VisualStudio2012中加載SOS.dll擴(kuò)展)

這樣的便利性大大提高我們?cè)谡{(diào)試程序內(nèi)存方面、線程方面的好處,我們可以適當(dāng)?shù)淖鰤毫y(cè)試,然后Attach process,執(zhí)行SOS擴(kuò)展命名來查看內(nèi)存問題,當(dāng)需要調(diào)試程序邏輯時(shí)在單步調(diào)式C#代碼,一舉兩得。

加載.NET程序擴(kuò)展調(diào)試包(SOS.DLL、SOSEX.DLL)

對(duì).NET程序分析當(dāng)然是需要加載SOS擴(kuò)展了。加載SOS擴(kuò)展有兩個(gè)命令可以使用,第一個(gè)是.load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll,.load命令是要給出sos.dll絕對(duì)路徑的。第二個(gè)是.loadby sos modulename,.loadby 命令是可以根據(jù)已經(jīng)加載的模塊名稱來加載SOS.dll擴(kuò)展。使用第一個(gè)命令有一個(gè)問題就是,我們需要人工的判斷當(dāng)前環(huán)境到底是需要什么版本的SOS擴(kuò)展,而使用.loadby是可以根據(jù)已經(jīng)加載的模塊來自動(dòng)的查找對(duì)應(yīng)的SOS擴(kuò)展。

0:000> .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll

0:000> .loadby sos.dll clrjit

使用.loadby 命令很容易的就可以加載SOS擴(kuò)展,而不需要自己去判斷當(dāng)前程序是.NET什么版本的。

軟件標(biāo)簽: .NET調(diào)試

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載