다음을 통해 공유


IntelliTrace 독립 실행형 수집기 사용(C#, Visual Basic)

IntelliTrace 독립 실행형 수집기를 사용하면 대상 컴퓨터에 Visual Studio를 설치하지 않고 대상 시스템의 환경을 변경하지 않고 프로덕션 서버 또는 기타 환경에서 앱에 대한 IntelliTrace 진단 데이터를 수집할 수 있습니다. IntelliTrace 독립 실행형 수집기는 웹, SharePoint, WPF 및 Windows Forms 앱에서 작동합니다. 데이터 수집이 완료되면 수집기를 삭제하여 제거합니다.

비고

프로덕션 서버에서 문제를 진단하는 권장 방법은 배포 후 문제 진단을 참조하세요.

요구 사항

수집기에서 작동하는 앱은 무엇인가요?

  • IIS(인터넷 정보 서비스) 버전 7.0, 7.5, 8.0, 12.0 및 16.0에서 호스트되는 ASP.NET 웹앱

  • SharePoint 2010 및 SharePoint 2013 애플리케이션

  • WPF(Windows Presentation Foundation) 및 Windows Forms 앱.

시작하려면 어떻게 해야 합니까?

  1. 수집기 설치

  2. 수집기 디렉터리에 대한 권한 설정

  3. IntelliTrace PowerShell cmdlet을 설치하여 웹앱 또는 SharePoint 애플리케이션에 대한 데이터 수집

  4. .iTrace 파일 디렉터리에 대한 권한 설정

  5. 웹앱 또는 SharePoint 애플리케이션에서 데이터 수집

    -또는-

    관리되는 앱에서 데이터 수집

  6. Visual Studio Enterprise에서 .iTrace 파일 열기

수집기 설치

  1. 앱 서버에서 수집기 디렉터리(예: C:\IntelliTraceCollector)를 만듭니다.

  2. Visual Studio 설치 폴더에서 수집기를 가져옵니다.

    1. 예를 들어 수집기가 설치된 폴더에서 IntelliTraceCollection.cab 복사합니다.

      .. \Microsoft Visual Studio\18\Enterprise\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace

      .. \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

    2. 수집기 디렉터리에 IntelliTraceCollection.cab 배치합니다(예: C:\IntelliTraceCollector).

  3. IntelliTraceCollection.cab확장:

    1. 앱 서버에서 관리자 권한으로 명령 프롬프트 창을 엽니다.

    2. 수집기 디렉터리(예: C:\IntelliTraceCollector)로 이동

    3. expand 명령과 끝의 마침표(.)를 포함하여 IntelliTraceCollection.cab를 확장하세요.

      expand /f:* IntelliTraceCollection.cab .

      비고

      마침표(.)는 지역화된 컬렉션 계획을 포함한 하위 폴더를 유지합니다.

수집기 디렉터리에 대한 권한 설정

  1. 앱 서버에서 관리자 권한으로 명령 프롬프트 창을 엽니다.

  2. Windows icacls 명령을 사용하여 서버 관리자에게 수집기 디렉터리에 대한 모든 권한을 부여합니다. 다음은 그 예입니다.

    icacls "C:\IntelliTraceCollector" /grant " <Domain\AdministratorID>":F

  3. 웹앱 또는 SharePoint 애플리케이션에 대한 데이터를 수집하려면 다음을 수행합니다.

    1. IntelliTrace PowerShell cmdlet을 실행할 사람에게 수집기 디렉터리에 대한 모든 권한을 부여합니다.

      다음은 그 예입니다.

      icacls "C:\IntelliTraceCollector" /grant " <Domain\UserID>":F

    2. 웹앱 또는 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 애플리케이션에 대한 데이터 수집

  1. 앱 서버에서 PowerShell이 사용하도록 설정되어 있는지 확인합니다. 대부분의 Windows Server 버전에서는 서버 관리자 관리 도구에서 이 기능을 추가할 수 있습니다.

    서버 관리자 INTELLITRACE_ServerManager_AddPowerShell 사용하여 PowerShell 추가

  2. IntelliTrace PowerShell cmdlet을 설치합니다.

    1. 관리자 권한으로 PowerShell 명령 창을 엽니다.

      1. 시작, 모든 프로그램, 액세서리, Windows PowerShell을 선택합니다.

      2. 다음 단계 중 하나를 선택합니다.

        • 64비트 운영 체제에서 Windows PowerShell의 바로 가기 메뉴를 엽니다. 관리자 권한으로 실행을 선택합니다.

        • 32비트 운영 체제에서 Windows PowerShell(x86)의 바로 가기 메뉴를 엽니다. 관리자 권한으로 실행을 선택합니다.

    2. PowerShell 명령 창에서 Import-Module 명령을 사용하여 Microsoft.VisualStudio.IntelliTrace.PowerShell.dll가져옵니다.

      다음은 그 예입니다.

      Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"

.iTrace 파일 디렉터리에 대한 권한 설정

  1. 앱 서버에서 .iTrace 파일 디렉터리(예: C:\IntelliTraceLogFiles)를 만듭니다.

    비고

    • 앱 속도가 느려지지 않도록 하려면 매우 활성화되지 않은 로컬 고속 디스크에서 위치를 선택합니다.
      • .iTrace 파일과 수집기 파일을 같은 위치에 배치할 수 있습니다. 그러나 웹앱 또는 SharePoint 애플리케이션이 있는 경우 이 위치가 애플리케이션을 호스트하는 디렉터리 외부에 있는지 확인합니다.

    중요합니다

    • .iTrace 파일 디렉터리를 수집기에서 작동해야 하는 ID로만 제한합니다. IntelliTrace는 메서드 매개 변수 또는 반환 값으로 전달되는 모든 데이터를 기록할 수 있으므로 .iTrace 파일에는 사용자, 데이터베이스, 다른 원본 위치 및 연결 문자열의 데이터와 같은 중요한 정보가 포함될 수 있습니다.
      • .iTrace 파일을 열 수 있는 사용자에게 중요한 데이터를 볼 권한이 있는지 확인합니다. .iTrace 파일을 공유할 때는 주의해야 합니다. 다른 사용자가 액세스 권한이 있어야 하는 경우 파일을 안전한 공유 위치에 복사합니다.
  2. 웹앱 또는 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 탐색기(또는 파일 탐색기)를 사용하여 사용 권한을 설정하려면 다음을 실행합니다.

      1. .iTrace 파일 디렉터리에 대한 속성을 엽니다.

      2. 보안 탭에서 편집, 추가를 선택합니다.

      3. 이 개체 유형 선택 상자에 기본 제공 보안 주체가 표시되는지 확인합니다. 없는 경우 개체 형식 을 선택하여 추가합니다.

      4. 로컬 컴퓨터가 이 위치에서 상자에 표시되는지 확인합니다. 위치가 없으면 위치를 선택하여 변경합니다.

      5. 선택할 개체 이름 입력 상자에서 웹앱 또는 SharePoint 애플리케이션에 대한 애플리케이션 풀을 추가합니다.

      6. 이름을 해결하려면 이름 확인을 선택하세요. 확인을 선택합니다.

      7. 애플리케이션 풀에 모든 권한이 있는지 확인합니다.

웹앱 또는 SharePoint 애플리케이션에서 데이터 수집

  1. 데이터 수집을 시작하려면 관리자 권한으로 PowerShell 명령 창을 열고 다음 명령을 실행합니다.

    Start-IntelliTraceCollection " <ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>

    중요합니다

    이 명령을 실행한 후 Y 를 입력하여 데이터 수집을 시작할지 확인합니다.

    예를 들어 SharePoint - 80 애플리케이션 풀의 SharePoint 애플리케이션에서 데이터를 수집하려면 다음을 수행합니다.

    Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"

    이름 Description
    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 파일을 열 수 있나요? 아니요, 데이터가 수집되는 동안 파일이 잠깁니다.

  2. 문제를 재현합니다.

  3. .iTrace 파일의 검사점을 만들려면 다음 구문을 사용합니다.

    Checkpoint-IntelliTraceCollection " <ApplicationPool>"

  4. 컬렉션 상태를 확인하려면 다음 구문을 사용합니다.

    Get-IntelliTraceCollectionStatus

  5. 데이터 수집을 중지하려면 다음 구문을 사용합니다.

    Stop-IntelliTraceCollection " <ApplicationPool>"

    중요합니다

    이 명령을 실행한 후 Y 를 입력하여 데이터 수집을 중지할지 확인합니다. 그렇지 않으면 수집기에서 데이터를 계속 수집하거나, iTrace 파일이 잠긴 상태로 유지되거나, 파일에 유용한 데이터가 포함되지 않을 수 있습니다.

  6. Visual Studio Enterprise에서 .iTrace 파일 열기

관리되는 앱에서 데이터 수집

  1. 앱을 시작하고 동시에 데이터를 수집하려면 다음 구문을 사용합니다.

    <IntelliTrace 수집기 실행 파일의 전체 경로 (FullPathToIntelliTraceCollectorExecutable)>\IntelliTraceSC.exe launch /cp:<수집 계획 경로 (PathToCollectionPlan)>/f:<ITrace 파일 디렉터리 및 파일 이름의 전체 경로 (FullPathToITraceFileDirectoryAndFileName)><앱 실행 파일 및 파일 이름 경로 (PathToAppExecutableFileAndFileName)>

    예를 들어 MyApp이라는 앱에서 데이터를 수집하려면 다음을 수행합니다.

    C:IntelliTraceCollectorIntelliTraceSC.exe launch /cp:"C:IntelliTraceCollectorcollection_plan.ASP.NET.default.xml" /f:"C:IntelliTraceLogFilesMyApp.itrace" "C:MyAppMyApp.exe"

    이름 Description
    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 파일 이름입니다. 보안 참고 사항: 상대 경로가 아닌 전체 경로를 제공합니다.
    애플리케이션실행파일경로및파일이름 관리되는 앱의 경로 및 파일 이름
  2. 앱을 종료하여 데이터 수집을 중지합니다.

  3. Visual Studio Enterprise에서 .iTrace 파일 열기

Visual Studio Enterprise에서 .iTrace 파일 열기

비고

IntelliTrace를 사용하여 디버그하고 코드를 단계별로 실행하려면 일치하는 소스 파일 및 기호 파일이 있어야 합니다. 배포 후 문제 진단을 참조하세요.

  1. .iTrace 파일을 이동하거나 Visual Studio Enterprise(Professional 또는 Community 버전이 아님)를 사용하여 컴퓨터에 복사합니다.

  2. Visual Studio 외부에서 .iTrace 파일을 두 번 클릭하거나 Visual Studio 내부에서 파일을 엽니다.

    Visual Studio는 IntelliTrace 요약 페이지를 보여줍니다. 대부분의 섹션에서는 이벤트 또는 기타 항목을 검토하고, 항목을 선택하고, 이벤트가 발생한 지점과 시기에 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에서 데이터를 수집하는 수집 계획의 모듈을 검토합니다. 관심 있는 모듈만 포함하도록 컬렉션 계획을 편집합니다.

    1. 수집 계획을 엽니다. <ModuleList> 요소를 찾습니다.

    2. <ModuleList>에서 isExclusionList 특성을 false로 설정합니다.

    3. <Name> 요소를 사용하여 각 모듈을 파일 이름, 문자열 값 중 하나로 지정하여 이름에 해당 문자열 또는 공개 키가 포함된 모듈을 포함합니다.

      예를 들어 Fabrikam 파이버 웹앱의 기본 웹 모듈에서만 데이터를 수집하려면 다음과 같은 목록을 만듭니다.

    <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 개체Employeeoldemployee 허용하는 메서드 시그니처가 있다고 가정합니다.

    public Employee AlterEmployee(int id, Employee oldemployee)

    Employee 유형에는 다음과 같은 특성이 있습니다: Id, Name, HomeAddress. 연관 관계가 EmployeeAddress 형식 간에 존재합니다.

    직원과 주소의 관계

    수집기는 id, Employee.Id, Employee.Name의 값과 Employee 메서드에서 반환된 AlterEmployee 객체의 값을 기록합니다. 그러나 수집기는 null인지 여부 이외의 다른 개체에 대한 Address 정보를 기록하지 않습니다. 수집기는 메서드의 지역 변수에 대한 데이터를 기록하지 않습니다. 단, 다른 메서드가 해당 지역 변수를 메서드 매개 변수로 사용할 때는 그 시점에 방법 매개 변수로 기록됩니다.

IntelliTrace 데이터를 가져올 수 있는 다른 위치는 어디인가요?

Visual Studio Enterprise의 IntelliTrace 디버깅 세션에서 IntelliTrace 데이터를 가져올 수 있습니다. IntelliTrace 기능을 참조하세요.

자세한 내용은 어디서 확인할 수 있나요?

저장된 IntelliTrace 데이터 사용

IntelliTrace

Blogs

IntelliTrace 독립 실행형 수집기를 원격으로 사용

IntelliTrace 컬렉션 계획 만들기 및 사용자 지정

프로덕션 서버에서 IntelliTrace 컬렉션 최적화

Microsoft DevOps

포럼

Visual Studio 디버거