使用獨立的收集器在 Visual Studio 外部收集 IntelliTrace 資料
若要在生產環境或其他環境中偵錯應用程式,請使用 IntelliTrace 收集器將診斷資料儲存到 IntelliTrace 記錄檔 (.iTrace 檔案)。 這可讓您記錄應用程式中發生的情況,而不需要安裝 Visual Studio 或變更應用程式的環境。 收集資料完成時,只要刪除收集器,即可解除安裝它。
觀看 IntelliTrace 動作:收集和分析生產環境中的 IntelliTrace 資料,以進行偵錯 (Channel 9 影片)
需求
.NET Framework 3.5、4 或 4.5
在開發電腦或其他要開啟 .iTrace 檔案之電腦上的 Visual Studio Ultimate
注意事項
請務必儲存您的符號 (.pdb) 檔案。若要使用 IntelliTrace 偵錯和逐步執行程式碼,您必須具有相符的原始程式檔和符號檔。請參閱 尋找符號 (.pdb)、來源和二進位檔案。
常見問題集
哪些應用程式配合收集器運作?
如何開始?
我該如何取得大部分的資料,而不會讓應用程式變慢?
哪些其他位置可以取得 IntelliTrace 資料?
裝載於 Internet Information Services (IIS) 7.0、7.5 和 8.0 版的 ASP.NET Web 應用程式
SharePoint 2010 應用程式
Managed 傳統型應用程式 (.exe 檔案)
安裝收集器
Set up permissions for the collector directory.
安裝 IntelliTrace PowerShell Cmdlet 以收集 Web 應用程式或 SharePoint 應用程式的資料。
設定 .iTrace 檔案目錄的使用權限
從 Web 應用程式或 SharePoint 應用程式中收集資料
-或-
從 Managed 應用程式收集資料
在 Visual Studio Ultimate 中開啟 .iTrace 檔案
在應用程式的伺服器上,建立收集器目錄,例如:C:\IntelliTraceCollector
從 Microsoft 下載中心或 Visual Studio 安裝資料夾取得收集器:
Microsoft 下載中心:
在應用程式的伺服器上,移至 IntelliTrace Collector for Visual Studio。
選擇 IntelliTraceCollector.exe 旁邊的 [下載]。
將 IntelliTraceCollector.exe 儲存到收集器目錄,例如:C:\IntelliTraceCollector
執行 IntelliTraceCollector.exe。 這會解壓縮 IntelliTraceCollection.cab 檔案。
-或-
Visual Studio 安裝資料夾:
注意事項
若要取得支援 SharePoint 2010 應用程式診斷事件的收集器,請下載 IntelliTrace Collector for Visual Studio,或確定您已安裝 Visual Studio 2012.1。
複製下列資料夾中的 IntelliTraceCollection.cab:
.. \Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0
將 IntelliTraceCollection.cab 放置在收集器目錄,例如:C:\IntelliTraceCollector
展開 IntelliTraceCollection.cab:
在應用程式的伺服器上,以系統管理員身分開啟命令提示字元視窗。
瀏覽至收集器目錄,例如:C:\IntelliTraceCollector
使用 expand 命令,並在結尾加上句號 (.),以展開 IntelliTraceCollection.cab:
expand /f:* IntelliTraceCollection.cab
注意事項
句號 (.) 會保留包含當地語系化收集計畫的子資料夾。
在應用程式的伺服器上,以系統管理員身分開啟命令提示字元視窗。
使用 Windows icacls 命令,將伺服器系統管理員完整權限提供給收集器目錄。 例如:
icacls "C:\IntelliTraceCollector" /grant " <Domain\AdministratorID> ":F
若要從 Web 應用程式或 SharePoint 應用程式中收集資料:
將收集器目錄的完整權限提供給將會執行 IntelliTrace PowerShell Cmdlet 的人員。
例如:
icacls "C:\IntelliTraceCollector" /grant " <Domain\UserID> ":F
將收集器安裝目錄的讀取和執行權限提供給 Web 應用程式或 SharePoint 應用程式的應用程式集區。
例如:
對於 [DefaultAppPool] 應用程式集區中的 Web 應用程式:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
對於 [SharePoint - 80] 應用程式集區中的 SharePoint 應用程式:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
在應用程式的伺服器上,確定 PowerShell 已啟用。 對於 Windows Server 大部分的版本,您可以在 [伺服器管理員] 系統管理工具中加入這項功能。
安裝 IntelliTrace PowerShell Cmdlet。
以系統管理員身分開啟 PowerShell 命令視窗。
依序選擇 [開始]、[所有程式]、[附屬應用程式]、[Windows PowerShell]。
選擇下列其中一個步驟:
在 64 位元作業系統上,開啟 [Windows PowerShell] 的捷徑功能表。 選擇 [以系統管理員身分執行]。
在 32 位元作業系統上,開啟 [Windows PowerShell (x86)] 的捷徑功能表。 選擇 [以系統管理員身分執行]。
在 PowerShell 命令視窗中,請使用 Import-Module 命令匯入 Microsoft.VisualStudio.IntelliTrace.PowerShell.dll。
例如:
Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"
在應用程式的伺服器上,建立 .iTrace 檔案目錄,例如:C:\IntelliTraceLogFiles
注意事項
為了避免使應用程式變慢,請選擇活動不是很頻繁的本機高速磁碟上的位置。
您可以將 .iTrace 檔案和收集器檔案放置在相同的位置。不過,如果您具有 Web 應用程式或 SharePoint 應用程式,請確定這個位置是在裝載應用程式的目錄以外。
安全性提示
將 .iTrace 檔案目錄限制為必須使用收集器的識別。由於 IntelliTrace 可以記錄任何傳入方法參數或做為傳回值的資料,因此 .iTrace 檔案可能會包含敏感資料,例如來自使用者、資料庫、其他來源位置和連接字串的資料。
確定可以開啟 .iTrace 檔案的人員有權檢視敏感性資料。共用 .iTrace 檔案時要小心。如果其他人必須有存取權,請將檔案複製到安全的共用位置。
若為 Web 應用程式或 SharePoint 應用程式,請將其應用程式集區完整使用權限提供給 .iTrace 檔案目錄。 您可以使用 Windows icacls 命令,或使用 Windows 檔案總管 (或檔案總管)。
例如:
若要使用 Windows icacls 命令設定使用權限:
對於 [DefaultAppPool] 應用程式集區中的 Web 應用程式:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
對於 [SharePoint - 80] 應用程式集區中的 SharePoint 應用程式:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
-或-
若要使用 Windows 檔案總管 (或檔案總管) 設定使用權限:
開啟 .iTrace 檔案目錄的 [內容]。
在 [安全性] 索引標籤上,選擇 [編輯]、[加入]。
確定 [內建安全性主體] 出現在 [選取此物件類型] 方塊中。 如果不存在,請選擇 [物件型別] 進行新增。
確定您的本機電腦出現在 [從這個位置] 方塊中。 如果不存在,請選擇 [位置] 進行變更。
在 [輸入物件名稱來選取] 方塊中,加入 Web 應用程式或 SharePoint 應用程式的應用程式集區。
選擇 [檢查名稱] 以解析名稱。 選擇 [確定]。
確定應用程式集區擁有 [完全控制]。
若要開始收集資料,請以系統管理員身分開啟 PowerShell 命令視窗,然後執行此命令:
Start-IntelliTraceCollection "<ApplicationPool>" <PathToCollectionPlan> <FullPathToITraceFileDirectory>
重要
執行這個命令之後,輸入 Y 以確認您要開始收集資料。
例如,若要從 SharePoint - 80 應用程式集中的 SharePoint 應用程式收集資料:
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
ApplicationPool
應用程式執行所在之應用程式集區的名稱
PathToCollectionPlan
收集計畫的路徑、設定收集器設定的 .xml 檔案。
您可以指定收集器隨附的計劃。 下列計劃適用於 Web 應用程式和 SharePoint 應用程式:
collection_plan.ASP.NET.default.xml
只收集 IntelliTrace 事件和 SharePoint 事件,包括例外狀況、資料庫呼叫與 Web 伺服器要求。
collection_plan.ASP.NET.trace.xml
收集函式呼叫和 collection_plan.ASP.NET.default.xml 中的所有資料。 這個計劃適用於詳細的分析,但可能會使應用程式變得比 collection_plan.ASP.NET.default.xml 還要慢。
為了避免使應用程式變慢,請自訂這些計劃或建立您自己的計劃。 基於安全考量,請在相同收集器檔案的安全位置上放置所有自訂計畫。 請參閱建立和自訂 IntelliTrace 收集計畫和 我該如何取得大部分的資料,而不會讓應用程式變慢?
注意事項
根據預設,.iTrace 檔案的最大大小為 100 MB。當 .iTrace 檔案達到這個限制時,收集器會刪除檔案中最早的項目,讓出空間給較新項目。若要變更這個限制,請編輯收集計畫的 MaximumLogFileSize 屬性。哪裡可以找到這些收集計畫的當地語系化版本?
您可以在收集器的安裝子資料夾中找到當地語系化計畫。
FullPathToITraceFileDirectory
.iTrace 檔案目錄的完整路徑。
安全性提示
提供完整路徑,而非相對路徑。收集器會附加至應用程式集區並開始收集資料。
此時可以開啟 .iTrace 檔案嗎?否,檔案在資料收集期間鎖定。
重現問題。
若要擷取 .iTrace 檔案快照,請使用這個語法:
Checkpoint-IntelliTraceCollection "<ApplicationPool>"
若要檢查集合狀態,請使用下列語法:
Get-IntelliTraceCollectionStatus
若要停止收集資料,請使用下列語法:
Stop-IntelliTraceCollection "<ApplicationPool>"
重要
執行這個命令之後,輸入 Y 以確認您要停止收集資料。否則,收集器可能繼續收集資料、iTrace 檔案會保持鎖定,或者檔案可能不包含任何有用的資料。
在 Visual Studio Ultimate 中開啟 .iTrace 檔案
若要同時啟動應用程式和收集資料,請使用下列語法:
<FullPathToIntelliTraceCollectorExecutable> \IntellitraceSC.exe launch /cp: <PathToCollectionPlan> /f:<FullPathToITraceFileDirectoryAndFileName> <PathToAppExecutableFileAndFileName>
例如,若要從名為 MyApp 的應用程式收集資料:
C:\IntelliTraceCollector\IntelliTraceSC.exe launch /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" /f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"
FullPathToIntelliTraceCollectorExecutable
收集器可執行檔 IntelliTraceSC.exe 的完整路徑
PathToCollectionPlan
收集計畫的路徑、設定收集器設定的 .xml 檔案。
您可以指定收集器隨附的計劃。 下列計劃適用於 Managed 應用程式:
collection_plan.ASP.NET.default.xml
只收集 IntelliTrace 事件,包括例外狀況、資料庫呼叫與 Web 伺服器要求。
collection_plan.ASP.NET.trace.xml
收集函式呼叫和 collection_plan.ASP.NET.default.xml 中的所有資料。 這個計劃適用於詳細的分析,但可能會使應用程式變得比 collection_plan.ASP.NET.default.xml 還要慢。
為了避免使應用程式變慢,請自訂這些計劃或建立您自己的計劃。 基於安全考量,請在相同收集器檔案的安全位置上放置所有自訂計畫。 請參閱建立和自訂 IntelliTrace 收集計畫和 我該如何取得大部分的資料,而不會讓應用程式變慢?
注意事項
根據預設,.iTrace 檔案的最大大小為 100 MB。當 .iTrace 檔案達到這個限制時,收集器會刪除檔案中最早的項目,讓出空間給較新項目。若要變更這個限制,請編輯收集計畫的 MaximumLogFileSize 屬性。哪裡可以找到這些收集計畫的當地語系化版本?
您可以在收集器的安裝子資料夾中找到當地語系化計畫。
FullPathToITraceFileDirectoryAndFileName
.iTrace 檔案目錄的完整路徑和包含 .itrace 副檔名的 .iTrace 檔案名稱。
安全性提示
提供完整路徑,而非相對路徑。PathToAppExecutableFileAndFileName
Managed 應用程式的路徑和檔案名稱
結束應用程式以停止資料收集。
在 Visual Studio Ultimate 中開啟 .iTrace 檔案
將 .iTrace 檔案移動或複製到具有 Visual Studio Ultimate 的電腦。
按兩下 Visual Studio 之外的 .iTrace 檔案,或從 Visual Studio 內開啟檔案。
Visual Studio 會顯示 [IntelliTrace 摘要] 頁面。 在大部分區段中,您可以檢閱事件或其他項目、選擇項目,以及在事件發生的位置和時間點上使用 IntelliTrace 開始偵錯。 請參閱 使用 IntelliTrace 記錄檔 (.iTrace) 偵錯應用程式。
注意事項
若要使用 IntelliTrace 偵錯和逐步執行程式碼,您必須具有相符的原始程式檔和符號檔。請確定符號檔案在 Visual Studio 符號路徑中。否則,Visual Studio 無法解析來源位置並會顯示訊息「找不到符號」。請參閱 尋找符號 (.pdb)、來源和二進位檔案。
IntelliTrace 可以收集大量的資料,因此對您應用程式效能的影響將視 IntelliTrace 收集的資料及其分析的程式碼類型而定。 請參閱在生產伺服器上最佳化 IntelliTrace 收集。
以下是一些方式讓您取得大部分的資料,而同時不會讓應用程式變慢:
只有在您認為有問題發生,或是可以重現問題時,才要執行 IntelliTrace 收集器。
啟動收集,重現問題,然後停止收集。 在 Visual Studio Ultimate 中開啟 .iTrace 檔案並檢查資料。 請參閱 在 Visual Studio Ultimate 中開啟 .iTrace 檔案。
對於 Web 應用程式和 SharePoint 應用程式,收集器會針對共用指定的應用程式集區的每個應用程式記錄資料。 這可能會讓共用相同應用程式集區的任何應用程式變慢,即使您可以在收集計畫中僅指定單一應用程式的模組。
為了避免收集器讓其他應用程式變慢,請在其專屬的應用程式集區中裝載每個應用程式。
在收集計畫中檢閱 IntelliTrace 收集資料的事件。 編輯收集計畫,停用不相關或不感興趣的事件。
若要停用事件,請將 <DiagnosticEventSpecification> 項目的 enabled 屬性設定為 false:
<DiagnosticEventSpecification enabled="false">
如果 enabled 屬性不存在,表示事件已啟用。
這如何增加效能?
您可以停用與應用程式無關的事件以縮短啟動時間。 例如,針對不使用 Windows Workflow 的應用程式,停用 Windows Workflow 事件。
您可以針對存取登錄但不會顯示登錄設定問題的應用程式,停用登錄註冊事件以改善啟動和執行階段的效能。
檢閱 IntelliTrace 收集資料的收集計畫的模組。 編輯收集計畫,使其僅包含您感興趣的模組:
開啟收集計畫。 尋找 <ModuleList> 項目。
在 <ModuleList> 中,將 isExclusionList 屬性設定為 false。
使用 <Name> 項目來指定具有下列其中一項的每個模組的:檔案名稱、字串值 (包含名稱中有該字串的任何模組),或公開金鑰。
例如,若只要從 Fabrikam Fiber Web 應用程式的主要 Web 模組中收集資料,請建立如下的清單:
<ModuleList isExclusionList="false"> <Name>FabrikamFiber.Web.dll</Name> </ModuleList>
若要從名稱中包含 "Fabrikam" 的所有模組收集資料,請建立如下的清單:
<ModuleList isExclusionList="false"> <Name>Fabrikam</Name> </ModuleList>
若要透過指定其公開金鑰語彙基元從模組收集資料,請建立如下的清單:
<ModuleList isExclusionList="false"> <Name>PublicKeyToken:B77A5C561934E089</Name> <Name>PublicKeyToken:B03F5F7F11D50A3A</Name> <Name>PublicKeyToken:31BF3856AD364E35</Name> <Name>PublicKeyToken:89845DCD8080CC91</Name> <Name>PublicKeyToken:71E9BCE111E9429C</Name> </ModuleList>
這如何增加效能?
當應用程式啟動並執行時,這會減少 IntelliTrace 收集方法呼叫資訊和其他檢測資料的資料量。 這項資料可讓您:
在收集資料之後逐步執行程式碼。
檢查傳遞至函式呼叫與從它傳回的值。
為什麼不排除模組?
根據預設,收集計畫是透過將 isExclusionList 屬性設定為 true 來排除模組。 不過,排除模組仍然可能導致從不符合清單準則和不感興趣的模組收集資料,例如協力廠商或開放原始碼模組。
是否有 IntelliTrace 不收集的任何資料?
是,為了減輕對效能的影響,IntelliTrace 資料收集只限於傳遞至方法和方法傳回的基本資料型別值,以及傳遞至方法和方法傳回之最上層物件的欄位的基本資料型別值。
例如,假設您有一個可接受整數 id 和 Employee 物件 oldemployee 的 AlterEmployee 方法簽章:
public Employee AlterEmployee(int id, Employee oldemployee)
Employee 型別有下列屬性:Id、Name 和 HomeAddress。 關聯性 (Association Relationship) 存在於 Employee 和 Address 型別之間。
收集器會記錄從 AlterEmployee 方法傳回的 id、Employee.Id、Employee.Name 和 Employee 物件值。 不過,收集器不會記錄 Address 物件是否為 null 以外的資訊。 收集器也不會記錄有關 AlterEmployee 方法的區域變數資料,除非其他方法使用這些區域變數做為參數,此時就會記錄做為方法參數。
在 Visual Studio Ultimate 中從 IntelliTrace 偵錯工作階段,請參閱在 Visual Studio 中使用 IntelliTrace 錄製程式碼執行以偵錯。
在 Microsoft Test Manager 中從測試工作階段,請參閱 HOW TO:收集 IntelliTrace 資料以協助偵錯困難的問題。
使用 IntelliTrace 記錄檔 (.iTrace) 偵錯應用程式