IntelliTrace 독립 실행형 수집기 사용(C#, Visual Basic)
IntelliTrace 독립 실행형 수집기 를 사용하면 대상 컴퓨터에 Visual Studio를 설치하거나 대상 시스템 환경을 변경하지 않고도 프로덕션 서버 또는 기타 환경에서 앱에 대해 IntelliTrace 진단 데이터를 수집할 수 있습니다. IntelliTrace 독립 실행형 수집기는 웹, SharePoint, WPF 및 Windows Forrms 앱에서 작동합니다. 데이터 수집을 마쳤으면 컬렉터를 삭제하여 제거하면 됩니다.
참고 항목
프로덕션 서버에서 문제를 진단하는 권장 방법은 배포 후 문제 진단을 참조하세요.
요구 사항
.NET Framework 3.5 이상
.iTrace 파일을 열기 위한 개발 컴퓨터 또는 다른 컴퓨터의 Visual Studio Enterprise(Professional 또는 Community Edition 아님)
참고 항목
기호(.pdb) 파일을 저장해야 합니다. IntelliTrace를 사용하여 코드를 디버그하고 단계별로 실행하려면 일치하는 소스 파일과 기호 파일이 있어야 합니다. 배포 후 문제 진단을 참조하세요.
FAQ
컬렉터를 사용할 수 있는 앱
IIS(인터넷 정보 서비스) 버전 7.0, 7.5, 8.0, 12.0 및 16.0에서 호스트되는 ASP.NET 웹앱
SharePoint 2010 및 SharePoint 2013 애플리케이션
WPF(Windows Presentation Foundation) 및 Windows Forms 앱
시작하려면 어떻게 해야 하나요?
IntelliTrace PowerShell cmdlet을 설치하고 웹앱 또는 SharePoint 애플리케이션에 대한 데이터를 수집
웹 애플리케이션 또는 SharePoint 애플리케이션에서 데이터 수집
또는
수집기 설치
앱 서버에서 C:\IntelliTraceCollector와 같은 수집기 디렉터리를 만듭니다.
Visual Studio 설치 폴더에서 수집기를 가져옵니다.
수집기가 설치된 폴더에서 IntelliTraceCollection.cab를 복사합니다. 예를 들면 다음과 같습니다.
..\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace
또는 Visual Studio 이전 버전:
..\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\12.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
웹앱 또는 SharePoint 애플리케이션에서 데이터를 수집하려면 다음 단계를 수행합니다.
IntelliTrace PowerShell cmdlet을 실행하는 사용자에게 수집기 디렉터리에 대한 모든 권한을 제공합니다.
예시:
icacls "C:\IntelliTraceCollector" /grant "
<Domain\UserID>":F
웹앱 또는 SharePoint 애플리케이션의 애플리케이션 풀에 수집기 디렉터리에 대한 읽기 및 실행 권한을 제공합니다.
예시:
DefaultAppPool 애플리케이션 풀의 웹앱:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
SharePoint - 80 애플리케이션 풀의 SharePoint 애플리케이션:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
IntelliTrace PowerShell cmdlet을 설치하고 웹앱 또는 SharePoint 애플리케이션에 대한 데이터를 수집
앱 서버에서 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 파일 디렉터리를 만듭니다.
참고 항목
- 앱 속도 저하를 방지하려면 사용량이 많지 않은 로컬 고속 디스크의 위치를 선택합니다.
- .ITrace 파일과 수집기 파일은 같은 위치에 배치할 수 있습니다. 그러나 웹앱 또는 SharePoint 애플리케이션이 있는 경우에는 이 위치가 애플리케이션을 호스트하는 디렉터리 외부에 있어야 합니다.
Important
- .ITrace 파일 디렉터리는 수집기에서 사용해야 하는 ID만으로 제한합니다. IntelliTrace는 메서드 매개 변수로 또는 반환 값으로 전달되는 데이터를 기록할 수 있으므로 .iTrace 파일은 사용자, 데이터베이스, 기타 소스 정보 및 연결 문자열의 데이터와 같은 중요한 정보를 포함할 수 있습니다.
- .ITrace 파일을 열 수 있는 사용자에게 중요한 데이터를 볼 수 있는 권한이 있는지 확인합니다. .ITrace 파일을 공유할 때는 주의해야 합니다. 다른 사람이 액세스해야 하는 파일은 안전한 공유 위치에 복사합니다.
- 앱 속도 저하를 방지하려면 사용량이 많지 않은 로컬 고속 디스크의 위치를 선택합니다.
웹앱 또는 SharePoint 애플리케이션의 경우에는 .iTrace 파일 디렉터리에 대한 모든 권한을 해당 애플리케이션 풀에 제공합니다. Windows icacls 명령이나 Windows 탐색기 또는 파일 탐색기를 사용할 수 있습니다.
예시:
Windows icacls 명령을 통해 사용 권한을 설정하려면 다음 명령을 사용합니다.
DefaultAppPool 애플리케이션 풀의 웹앱:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
SharePoint - 80 애플리케이션 풀의 SharePoint 애플리케이션:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
또는
Windows 탐색기 또는 파일 탐색기를 통해 사용 권한을 설정하려면 다음 단계를 수행합니다.
.iTrace 파일 디렉터리의 속성 을 엽니다.
보안 탭에서 편집, 추가를 차례로 선택합니다.
개체 유형을 선택하세요. 상자에 기본 제공 보안 계정 이 표시되는지 확인하고 표시되지 않으면 개체 형식 을 선택하여 추가합니다.
찾을 위치를 선택하세요. 상자에 로컬 컴퓨터가 표시되는지 확인하고 표시되지 않으면 위치 를 선택하여 변경합니다.
선택할 개체 이름을 입력하세요. 상자에 웹앱 또는 SharePoint 애플리케이션의 애플리케이션 풀을 추가합니다.
이름 확인 을 선택하여 이름을 확인합니다. 확인을 선택합니다.
애플리케이션 풀에 모든 권한이 있는지 확인합니다.
웹 애플리케이션 또는 SharePoint 애플리케이션에서 데이터 수집
데이터 수집을 시작하려면 관리자 권한으로 PowerShell 명령 창을 열고 다음 명령을 실행합니다.
Start-IntelliTraceCollection
"
<ApplicationPool>"
<PathToCollectionPlan> <FullPathToITraceFileDirectory>Important
이 명령을 실행한 후 Y 를 입력하여 데이터 수집 시작을 확인합니다.
예를 들어 SharePoint - 80 애플리케이션 풀의 SharePoint 애플리케이션에서 데이터를 수집하려면 다음 명령을 실행합니다.
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
속성 설명 ApplicationPool 애플리케이션이 실행되는 애플리케이션 풀의 이름입니다. PathToCollectionPlan 수집 계획(수집기의 설정을 구성하는 .xml 파일)의 경로입니다.
수집기와 함께 제공되는 계획을 지정할 수 있습니다. 다음 계획은 웹앱 및 SharePoint 애플리케이션에 대해 사용할 수 있습니다.
- collection_plan.ASP.NET.default.xml
예외, 데이터베이스 호출 및 웹 서버 요청을 포함한 IntelliTrace 이벤트 및 SharePoint 이벤트만 수집합니다.
- collection_plan.ASP.NET.trace.xml
함수 호출과 collection_plan.ASP.NET.default.xml의 모든 데이터를 수집합니다. 이 계획은 상세 분석의 경우에는 효율적이지만 collection_plan.ASP.NET.default.xml에 비해 앱의 속도는 더 느려질 수 있습니다.
앱 속도 저하를 방지하려면 이러한 계획을 사용자 지정하거나 계획을 직접 만듭니다. 보안을 유지하려면 수집기 파일과 같은 안전한 위치에 사용자 지정 계획을 저장합니다. IntelliTrace 수집 계획 만들기 및 사용자 지정과 내 앱의 속도를 저하시키지 않으면서 가장 많은 데이터를 얻는 방법을 참조하십시오. 참고: 기본적으로 .iTrace 파일의 최대 크기는 100MB입니다. .iTrace 파일이 이 제한에 도달하면 수집기는 파일의 가장 오래된 항목을 삭제하여 새 항목을 저장하기 위한 공간을 확보합니다. 이 제한을 변경하려면 수집 계획의MaximumLogFileSize
특성을 편집합니다.
수집 계획의 지역화된 버전을 찾을 수 있는 위치
수집기 하위 폴더에서 지역화된 계획을 찾을 수 있습니다.FullPathToITraceFileDirectory .iTrace 파일 디렉터리의 전체 경로입니다. 보안 정보: 상대 경로가 아닌 전체 경로를 지정합니다. 수집기는 애플리케이션 풀에 연결되어 데이터 수집을 시작합니다.
지금은 .iTrace 파일을 열 수 없습니다. 데이터 수집 중에는 파일이 잠겨 있습니다.
문제를 재현하세요.
.iTrace 파일의 검사점을 만들려면 다음 구문을 사용합니다.
Checkpoint-IntelliTraceCollection
"
<ApplicationPool>"
수집 상태를 확인하려면 다음 구문을 사용합니다.
Get-IntelliTraceCollectionStatus
데이터 수집을 중지하려면 다음 구문을 사용합니다.
Stop-IntelliTraceCollection
"
<ApplicationPool>"
Important
이 명령을 실행한 후 Y 를 입력하여 데이터 수집 중지를 확인합니다. 그렇지 않으면 수집기가 데이터를 계속 수집하거나 iTrace 파일이 잠긴 상태로 유지되거나 파일에 유용한 데이터가 포함되지 않을 수 있습니다.
관리되는 앱에서 데이터를 수집합니다.
앱을 시작하는 동시에 데이터를 수집하려면 다음 구문을 사용합니다.
<FullPathToIntelliTraceCollectorExecutable>
\IntelliTraceSC.exe launch /cp:
<PathToCollectionPlan>/f:
<FullPathToITraceFileDirectoryAndFileName> <PathToAppExecutableFileAndFileName>예를 들어 MyApp앱에서 데이터를 수집하려면 다음 명령을 실행합니다.
C:IntelliTraceCollectorIntelliTraceSC.exe launch /cp:"C:IntelliTraceCollectorcollection_plan.ASP.NET.default.xml" /f:"C:IntelliTraceLogFilesMyApp.itrace" "C:MyAppMyApp.exe"
속성 설명 FullPathToIntelliTraceCollectorExecutable 수집기 실행 파일인 IntelliTraceSC.exe의 전체 경로입니다. PathToCollectionPlan 수집 계획(수집기의 설정을 구성하는 .xml 파일)의 경로입니다.
수집기와 함께 제공되는 계획을 지정할 수 있습니다. 관리되는 앱에 사용할 수 있는 계획은 다음과 같습니다.
- collection_plan.ASP.NET.default.xml
예외, 데이터베이스 호출 및 웹 서버 요청을 포함한 IntelliTrace 이벤트만 수집합니다.
- collection_plan.ASP.NET.trace.xml
함수 호출과 collection_plan.ASP.NET.default.xml의 모든 데이터를 수집합니다. 이 계획은 상세 분석의 경우에는 효율적이지만 collection_plan.ASP.NET.default.xml에 비해 앱의 속도는 더 느려질 수 있습니다.
앱 속도 저하를 방지하려면 이러한 계획을 사용자 지정하거나 계획을 직접 만듭니다. 보안을 유지하려면 수집기 파일과 같은 안전한 위치에 사용자 지정 계획을 저장합니다. IntelliTrace 수집 계획 만들기 및 사용자 지정과 내 앱의 속도를 저하시키지 않으면서 가장 많은 데이터를 얻는 방법을 참조하십시오. 참고: 기본적으로 .iTrace 파일의 최대 크기는 100MB입니다. .iTrace 파일이 이 제한에 도달하면 수집기는 파일의 가장 오래된 항목을 삭제하여 새 항목을 저장하기 위한 공간을 확보합니다. 이 제한을 변경하려면 수집 계획의MaximumLogFileSize
특성을 편집합니다.
수집 계획의 지역화된 버전을 찾을 수 있는 위치
수집기 하위 폴더에서 지역화된 계획을 찾을 수 있습니다.FullPathToITraceFileDirectoryAndFileName .iTrace 파일 디렉터리의 전체 경로와 확장명이 .itrace 인 .iTrace 파일 이름입니다. 보안 정보: 상대 경로가 아닌 전체 경로를 지정합니다. PathToAppExecutableFileAndFileName 관리되는 앱의 경로 및 파일 이름입니다. 앱을 종료하여 데이터 수집을 중지합니다.
Visual Studio Enterprise에서 .iTrace 파일을 엽니다.
참고 항목
IntelliTrace를 사용하여 코드를 디버그하고 단계별로 실행하려면 일치하는 소스 파일과 기호 파일이 있어야 합니다. 배포 후 문제 진단을 참조하세요.
.iTrace 파일을 Visual Studio Enterprise(Professional 또는 Community Edition 아님)가 설치된 컴퓨터로 이동하거나 복사합니다.
Visual Studio 외부에서 .iTrace 파일을 두 번 클릭하거나 Visual Studio 내부에서 파일을 엽니다.
Visual Studio에 IntelliTrace 요약 페이지가 표시됩니다. 대부분의 섹션에서 이벤트나 기타 항목을 검토하고, 항목을 선택하고, 이벤트가 발생한 시간 및 위치에 해당하는 지점에서 IntelliTrace를 사용하여 디버깅을 시작할 수 있습니다. 저장된 IntelliTrace 데이터 사용을 참조하세요.
참고 항목
IntelliTrace를 사용하여 코드를 디버그하고 단계별로 실행하려면 개발 컴퓨터에 일치하는 소스 파일과 기호 파일이 있어야 합니다. 배포 후 문제 진단을 참조하세요.
앱 속도를 그대로 유지하면서 데이터를 최대한 수집하려면 어떻게 하나요?
IntelliTrace는 많은 데이터를 수집할 수 있으므로 앱 성능에 대한 영향은 수집하는 데이터와 분석하는 코드의 종류에 따라 달라집니다. 프로덕션 서버에서 IntelliTrace 컬렉션 최적화를 참조하세요.
앱 속도를 그대로 유지하면서 대부분의 데이터를 가져올 수 있는 몇 가지 방법은 다음과 같습니다.
문제가 있다고 생각되거나 문제를 재현할 수 있는 경우에만 수집기를 실행합니다.
수집을 시작하고 문제를 재현한 다음 수집을 중지합니다. Visual Studio Enterprise에서 .iTrace 파일을 열고 데이터를 검사합니다. Visual Studio Enterprise에서 .iTrace 파일을 엽니다.를 참조하세요.
웹앱 및 SharePoint 애플리케이션의 경우 수집기는 지정한 애플리케이션 풀을 공유하는 모든 앱에 대한 데이터를 기록합니다. 수집 계획에서는 단일 앱에 대한 모듈만 지정할 수 있지만, 이로 인해 같은 애플리케이션 풀을 공유하는 앱의 속도가 느려질 수 있습니다.
수집기로 인해 다른 앱의 속도가 느려지지 않도록 하려면 자체 애플리케이션 풀에서 각 앱을 호스트합니다.
IntelliTrace가 데이터를 수집하는 이벤트를 수집 계획에서 검토합니다. 수집 계획을 편집하여 관련이나 필요가 없는 이벤트를 사용하지 않도록 설정합니다.
이벤트를 사용하지 않도록 설정하려면
enabled
요소의<DiagnosticEventSpecification>
특성을false
로 설정합니다.<DiagnosticEventSpecification enabled="false">
enabled
특성이 없으면 이벤트는 사용하도록 설정됩니다.이러한 방법을 통해 성능을 개선하는 방식
앱에 관련이 없는 이벤트를 사용하지 않도록 설정하여 시작 시간을 단축할 수 있습니다. 예를 들어 Windows 워크플로를 사용하지 않는 앱에 대해 Windows 워크플로 이벤트를 사용하지 않도록 설정합니다.
레지스트리에 액세스하기는 하지만 레지스트리 설정에 문제가 표시되지 않는 앱에 대해 레지스트리 이벤트를 사용하지 않도록 설정하면 시작 및 런타임 성능을 모두 개선할 수 있습니다.
IntelliTrace가 데이터를 수집하는 모듈을 수집 계획에서 검토하고, 다음 단계를 수행하여 관련이 있는 모듈만 포함하도록 수집 계획을 편집합니다.
수집 계획을 엽니다.
<ModuleList>
요소를 찾습니다.<ModuleList>
에서isExclusionList
특성을false
로 설정합니다.<Name>
요소를 사용하여 파일 이름, 문자열 값(이름에 해당 문자열이 들어 있는 모듈이 포함됨) 또는 공개 키 중 하나로 각 모듈을 지정합니다.예를 들어 Fabrikam Fiber 웹앱의 기본 웹 모듈에서만 데이터를 수집하려면 다음과 같은 목록을 만듭니다.
<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는 데이터 수집 시 메서드에서 전달 및 반환되는 기본 데이터 형식의 값과 메서드에서 전달 및 반환되는 최상위 개체의 필드에 포함된 기본 데이터 형식의 값만 수집합니다.
예를 들어
AlterEmployee
메서드 서명이 정수id
및Employee
개체oldemployee
를 허용한다고 가정해 보겠습니다.public Employee AlterEmployee(int id, Employee oldemployee)
Employee
형식에는Id
,Name
및HomeAddress
특성이 있습니다. 그리고Employee
및Address
형식 간에는 연결 관계가 있습니다.수집기는
id
메서드에서 반환되는Employee.Id
,Employee.Name
,Employee
및AlterEmployee
개체의 값을 기록합니다. 그러나Address
개체에 대한 정보는 null인지 여부를 제외하고는 기록하지 않습니다. 또한AlterEmployee
메서드의 로컬 변수에 대한 데이터도 기록하지 않습니다. 단, 다른 메서드가 해당 로컬 변수를 매개 변수로 사용하는 경우에는 로컬 변수가 메서드 매개 변수로 기록됩니다.
IntelliTrace 데이터를 가져올 수 있는 다른 위치
Visual Studio Enterprise의 IntelliTrace 디버깅 세션에서 IntelliTrace 데이터를 가져올 수 있습니다. IntelliTrace 기능을 참조하세요.
자세한 정보는 어디에 있나요?
블로그
원격으로 IntelliTrace 독립 실행형 수집기 사용
IntelliTrace 수집 계획 만들기 및 사용자 지정
프로덕션 서버에서 IntelliTrace 컬렉션 최적화