Visual Studio 11的時(shí)間機(jī)器IntelliTrace
Visual Studio 一直以來有個(gè)強(qiáng)大的功能IntelliTrace,我們可以稱之為軟件運(yùn)行中的時(shí)間機(jī)器,可以方便的幫助開發(fā)人員,在開發(fā)環(huán)境重現(xiàn)系統(tǒng)運(yùn)行的現(xiàn)場(chǎng),從而發(fā)現(xiàn)和解決問題,十分強(qiáng)大。一直以來就有很多開發(fā)人員想把它用到生產(chǎn)環(huán)境中,去捕獲實(shí)際的系統(tǒng)問題,這次在Visual Studio 11中,終于可以實(shí)現(xiàn)了,下面我們就試一下它的強(qiáng)大功能。
在具體操作前,我們先來回顧一下IntelliTrace的運(yùn)行原理,下面的截圖有個(gè)基本的理論基礎(chǔ),IntelliTrace的運(yùn)行需要有一個(gè)運(yùn)行中數(shù)據(jù)的收集計(jì)劃(CollectionPlan.xml),它記載了我們重點(diǎn)關(guān)心哪些數(shù)據(jù),這些信息將來會(huì)被收集起來;有了要收集的內(nèi)容,適當(dāng)?shù)臅r(shí)候啟動(dòng)了IntelliTrace,他的系統(tǒng)記錄器就會(huì)以一種插針的方式在應(yīng)用中收集數(shù)據(jù);數(shù)據(jù)收集后,生成一個(gè)IntelliTrace的信息文件,這里記錄了所有選擇的調(diào)用堆棧信息和程序運(yùn)行信息;通過這個(gè)IntelliTrace的信息文件,只要你有這個(gè)應(yīng)用,就可以在開發(fā)環(huán)境中重新系統(tǒng)運(yùn)行的當(dāng)時(shí)情況,通過前進(jìn)、后退等功能在系統(tǒng)中跟蹤程序問題的細(xì)節(jié),并結(jié)合調(diào)試發(fā)現(xiàn)系統(tǒng)運(yùn)行中的問題。
知道了這些基本原理,我們就可以試一下Visual Studio 11強(qiáng)大的IntelliTrace for Production功能了。
首先下載IntelliTrace Collector for Visual Studio 11,這已經(jīng)是一個(gè)單獨(dú)的產(chǎn)品了,下載地址在http://www.microsoft.com/visualstudio/11/zh-cn/downloads#intellitrace-collector。下載安裝后只有9M左右大小,十分的輕便,可以用到生產(chǎn)系統(tǒng)上。
下面就是配置數(shù)據(jù)收集計(jì)劃了,這是通過一個(gè)XML文件來實(shí)現(xiàn)的,具體配置內(nèi)容可以參見http://blogs.msdn.com/b/visualstudioalm/archive/2011/09/15/modifying-an-intellitrace-collection-plan-for-the-stand-alone-collector.aspx這里有一個(gè)詳盡的介紹。但是更省事的方式是使用Visual Studio中的配置界面(Tools ->Options ->Intellitrace),配置后會(huì)存儲(chǔ)到C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0\en下面的collectionplan.xml。呵呵,我們選擇了關(guān)注的事件,直接用它就好了。
安裝IntelliTrace完畢,我們也有了Collectionplan.xml的數(shù)據(jù)收集計(jì)劃了,下面我們可以使用IntelliTrace,但需在PowerShell模式下,所以系統(tǒng)需要安裝PowerShell,這里不贅述,安裝好后用Import-Module c:\IntelliTrace\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll命令,導(dǎo)入IntelliTrace的PowerShell命令,可以看到所有IntelliTrace相關(guān)的命令了。
下面就可以根據(jù)需要啟動(dòng)IntelliTrace,進(jìn)行數(shù)據(jù)收集了,我用Start-IntelliTraceCollection “FabrikamFiber.Extranet.Web”
C:\IntelliTraceLogsc:\IntelliTrace\collectionplan.xml啟動(dòng)了IntelliTrace,其中的第一個(gè)參數(shù)是應(yīng)用程序池名。其中后,就會(huì)在collectionplan.xml的指定目錄中生成數(shù)據(jù)文件,由于IntelliTrace記錄了很多系統(tǒng)運(yùn)行的堆棧細(xì)節(jié),所以增長會(huì)很快,你可要留好了硬盤了啊!
數(shù)據(jù)收集的差不多了,我們可以通過Stop-IntelliTraceCollection“FabrikamFiber.Extranet.Web” 結(jié)束數(shù)據(jù)收集,記住一切數(shù)據(jù)收集都是有代價(jià)的,我的機(jī)器在開啟了IntelliTrace后,增加了200M的內(nèi)存使用。
我們來看一下收集的結(jié)果把,到指定目錄,發(fā)現(xiàn)了生成的Itrace數(shù)據(jù)文件,我們就可以用它來進(jìn)行調(diào)試了,幫助我們重新系統(tǒng)出現(xiàn)問題的現(xiàn)場(chǎng),具體調(diào)試的細(xì)節(jié)請(qǐng)參見http://msdn.microsoft.com/en-us/library/dd264915(v=vs.110).aspx。
個(gè)人使用感受,IntelliTrace for Production真是一個(gè)很牛的功能,盡可能少的系統(tǒng)代價(jià)前提下,可以幫助收集到大量的系統(tǒng)信息,特別是可以直接在開發(fā)環(huán)境重現(xiàn)生產(chǎn)環(huán)境的問題,并可以調(diào)試重入,大大的解決了生產(chǎn)系統(tǒng)問題無法重新導(dǎo)致的系統(tǒng)問題,有給了我們.net開發(fā)者一個(gè)有效的利器去保障系統(tǒng)的可靠運(yùn)行。