[Visual Studio 2010] 善用 IntelliTrace 將客戶端的程式所發生的錯誤還原

[Visual Studio 2010] 善用 IntelliTrace 將客戶端的程式所發生的錯誤還原

這是VS2010所擁有的新功能,不一定需要TFS,前天上百敬老師的課,又將缺少的東西所補了一塊起來,我們都知道IntelliTrace可以將程式的執行歷程記錄下來

開始前先確認有無開啟IntelliTrace功能

VS2010 Tool bar→Tools→Options→Enable IntelliTrace

image

 

程式在執行時,若進入中斷點,可以看到右邊視窗的IntelliTrace所呈現的效果

image

 

若沒有設定中斷,按下Break All也是會馬上停下來,讓你觀察現在程式執行到哪裡了。

image

 

 

 

這些都是開發工具所帶給我們的好處,那End User端呢?他們沒有裝VS2010怎麼辦?我們可以還原當時的狀況嗎?

PS.在這裡所指的End User,是指測試/QA團隊或是客戶。

 


 

我們可借助IntelliTrace.exe,它的路逕如下:

x86:C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools

x64:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools

 

這時就要靠batch script來讓幫我們處理,將以下文字複製並另存成 intellitrace.bat(請依自己的實際狀況修改)


"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools\IntelliTrace" launch /collectionplan:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\TraceDebugger Tools\en\CollectionPlan.xml" /logfile:Demo.itrace Demo.exe

image

 

CollectionPlan.xml,TraceInstrumentation預設是沒有啟用的,請自行備份該檔案,並將所有的enable=”false”改成true

image

 

PS.End User端要有以下環境

1.有管理員權限能執行應用程式

2.有管理員權限能執行命令提示字元

3.要有IntelliTrace.exe檔案,這不是MS預設安裝的東西,所以要Copy上述資料夾一份到End User端。

 

把intellitrace.bat擺到exe目錄下,然後執行intellitrace.bat,它就會幫我們叫起Demo.exe,並且產生Demo.itrace檔案,所有的操作都會記在Demo.itrace檔案

image

 

 

 

 

若問題發生了,你也可以請End User回傳Demo.itrace檔案,讓你用VS2010開啟,還原當時候的狀況。

HelloWorld.itrace記錄了當時執行機器的環境,發生Exception的狀資料,執行緒處理狀況

image

 

大家應該都只會關心Exception Data,把它展開,就可以看到有哪些Exception

image

 

點Exception項目,就可以看到追蹤項目。由此就可以知道,End User是按下哪個按鈕所觸發的Exception了

image

 

當然,軟體會發生錯誤不只是會有Exception,很多時候都是邏輯錯誤引起,這只是幫我們快速找到顯性的bug而已。

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo