방법: 명령줄을 통해 프로파일러와 함께 독립 실행형 .NET Framework 응용 프로그램을 시작하여 메모리 데이터 수집How to: Launch a Stand-Alone .NET Framework Application with the Profiler to Collect Memory Data by Using the Command Line

이 항목은 Visual StudioVisual Studio 프로파일링 도구 명령줄 도구를 사용하여 .NET Framework 독립 실행형(클라이언트) 응용 프로그램을 시작하고 메모리 데이터를 수집하는 방법을 설명합니다.This topic describes how to use Visual StudioVisual Studio Profiling Tools command-line tools to start a .NET Framework stand-alone (client) application and collect memory data.

프로파일링 세션은 다음과 같은 세 부분으로 구성됩니다.A profiling session has three parts:

  • 프로파일러를 사용하여 응용 프로그램 시작Starting the application by using the profiler.

  • 프로파일링 데이터 수집Collecting profiling data.

  • 프로파일링 세션 종료Ending the profiling session.

참고

프로파일링 도구의 명령줄 도구는 Visual StudioVisual Studio 설치 디렉터리의 \Team Tools\Performance Tools 하위 디렉터리에 있습니다.Command-line tools of the Profiling Tools are located in the \Team Tools\Performance Tools subdirectory of the Visual StudioVisual Studio installation directory. 64비트 컴퓨터에서는 도구의 64비트 및 32비트 버전을 둘 다 사용할 수 있습니다.On 64-bit computers, both 64-bit and 32-bit versions of the tools are available. 프로파일러 명령줄 도구를 사용하려면 도구 경로를 명령 프롬프트 창의 PATH 환경 변수에 추가하거나 명령 자체에 추가해야 합니다.To use the profiler command-line tools, you must add the tools path to the PATH environment variable of the Command Prompt window or add it to the command itself. 자세한 내용은 명령줄 도구의 경로 지정을 참조하세요.For more information, see Specifying the Path to Command Line Tools.

프로파일러를 사용하여 응용 프로그램 시작Starting the Application with the Profiler

프로파일러를 사용하여 대상 응용 프로그램을 시작하려면 VSPerfCmd.exe/start/launch 옵션을 사용하여 프로파일러를 초기화하고 응용 프로그램을 시작합니다.To start a target application by using the profiler, you use the VSPerfCmd.exe/start and /launch options to initialize the profiler and start the application. /start/launch와 해당 개별 옵션을 하나의 명령줄에서 지정할 수 있습니다.You can specify /start and /launch and their respective options on one command line.

/globaloff 옵션을 추가하여 대상 응용 프로그램 시작 시 데이터 수집을 일시 중지할 수도 있습니다.You can also add the /globaloff options to pause data collection at the start of the target application. 그런 다음 /globalon을 사용하여 데이터 수집을 시작합니다.You then use /globalon to start to collect data.

프로파일러를 사용하여 응용 프로그램을 시작하려면To start an application by using the Profiler

  1. 명령 프롬프트 창을 엽니다.Open a Command Prompt window.

  2. 프로파일러를 시작합니다.Start the profiler. 유형:Type:

    VSPerfCmd /start:sample /output: OutputFile [Options]VSPerfCmd /start:sample /output: OutputFile [Options]

    • /start:sample 옵션은 프로파일러를 초기화합니다.The /start:sample option initializes the profiler.

    • /start에는 /output:OutputFile 옵션이 필요합니다.The /output:OutputFile option is required with /start. OutputFile은 프로파일링 데이터(.vsp) 파일의 이름과 위치를 지정합니다.OutputFile specifies the name and location of the profiling data (.vsp) file.

      /start:sample 옵션과 다음 옵션을 함께 사용할 수 있습니다.You can use any of the following options with the /start:sample option.

    옵션Option 설명Description
    /wincounter : WinCounterPath/wincounter : WinCounterPath 프로파일링 중에 수집할 Windows 성능 카운터를 지정합니다.Specifies a Windows performance counter to be collected during profiling.
    /automark : Interval/automark : Interval /wincounter와 함께 사용해야 합니다.Use with /wincounter only. Windows 성능 카운터 수집 이벤트 사이에 경과하는 시간(밀리초)을 지정합니다.Specifies the number of milliseconds between Windows performance counter collection events. 기본값은 500ms입니다.Default is 500 ms.
  3. 대상 응용 프로그램을 시작합니다.Start the target application. 유형:Type:

    VSPerfCmd /launch : appName /gc:{allocation|lifetime}[Options]VSPerfCmd /launch : appName /gc:{allocation|lifetime}[Options]

    • .NET Framework 메모리 데이터를 수집하려면 /gc:Keyword 옵션이 필요합니다.The /gc:Keyword option is required to collect .NET Framework memory data. keyword 매개 변수는 메모리 할당 데이터를 수집할지, 아니면 메모리 할당 및 개체 수명 데이터를 둘 다 수집할지 지정합니다.The keyword parameter specifies whether to collect memory allocation data, or to collect both memory allocation and object lifetime data.

      키워드Keyword 설명Description
      allocationallocation 메모리 할당 데이터만 수집합니다.Collect memory allocation data only.
      lifetimelifetime 메모리 할당 및 개체 수명 데이터를 둘 다 수집합니다.Collect both memory allocation and object lifetime data.

      /launch 옵션과 다음 옵션을 함께 사용할 수 있습니다.You can use any of the following options with the /launch option.

    옵션Option 설명Description
    /args : Arguments/args : Arguments 대상 응용 프로그램에 전달할 명령줄 인수가 포함된 문자열을 지정합니다.Specifies a string that contains the command-line arguments to be passed to the target application.
    /console/console 대상 명령줄 응용 프로그램을 별도의 창에서 시작합니다.Starts the target command-line application in a separate window.
    /events : Config/events : Config 프로파일링 중에 수집할 ETW(Windows용 이벤트 추적) 이벤트를 지정합니다.Specifies an Event Tracing for Windows (ETW) event to be collected during profiling. ETW 이벤트는 별도의 파일(.etl)로 수집됩니다.ETW events are collected in a separate (.etl) file.
    /targetclr : Version/targetclr : Version 한 응용 프로그램에 두 개 이상의 런타임 버전이 로드된 경우 프로파일링할 CLR(공용 언어 런타임) 버전을 지정합니다.Specifies the version of the common language runtime (CLR) to profile when more than one version of the runtime is loaded in an application.

데이터 컬렉션 제어Controlling Data Collection

대상 응용 프로그램이 실행 중이면 VSPerfCmd.exe 옵션을 사용하여 파일에 대한 데이터 쓰기를 시작하고 중지하는 방식으로 데이터 수집을 제어할 수 있습니다.When the target application is running, you can control data collection by starting and stopping the writing of data to the file by using VSPerfCmd.exe options. 데이터 수집을 제어하면 응용 프로그램의 시작 또는 종료와 같이 프로그램 실행의 특정 부분에 대한 데이터를 수집할 수 있습니다.Controlling data collection enables you to collect data for a specific part of program execution, such as starting or shutting down the application.

데이터 수집을 시작 및 중지하려면To start and stop data collection

  • 다음 옵션 쌍을 사용하여 데이터 수집을 시작 및 중지합니다.The following pairs of options start and stop data collection. 각 옵션을 개별 명령줄에서 지정합니다.Specify each option on a separate command line. 데이터 수집을 여러 번 켜고 끌 수 있습니다.You can turn data collection on and off multiple times.

    옵션Option 설명Description
    /globalon /globaloff/globalon /globaloff 모든 프로세스에 대한 데이터 수집을 시작(/globalon) 또는 중지(/globaloff)합니다.Starts (/globalon) or stops (/globaloff) data collection for all processes.
    /processon : PID processoff : PID/processon : PID processoff : PID 프로세스 ID(PID)로 지정된 프로세스에 대한 데이터 수집을 시작(/processon) 또는 중지(/processoff)합니다.Starts (/processon) or stops (/processoff) data collection for the process that is specified by the process ID (PID).
    /attach : PID /detach/attach : PID /detach /attachPID(프로세스 ID)로 지정된 프로세스에 대한 데이터 수집을 시작합니다./attach starts to collect data for the process that is specified by PID (the process ID). /detach는 모든 프로세스에 대한 데이터 수집을 중지합니다./detach stops data collection for all processes.
  • VSPerfCmd.exe/mark 옵션을 사용하여 프로파일링 표시를 데이터 파일에 삽입할 수 있습니다.You can also use the VSPerfCmd.exe/mark option to insert a profiling mark into the data file. /mark 명령은 식별자, 타임스탬프 및 선택적 사용자 정의 텍스트 문자열을 추가합니다.The /mark command adds an identifier, a time stamp, and an optional user-defined text string. 데이터 필터링에 표시를 사용할 수 있습니다.Marks can be used to filter the data.

프로파일링 세션 종료Ending the Profiling Session

프로파일링 세션을 종료하려면 프로파일러가 모든 프로파일링된 프로세스에서 분리되어야 하고 프로파일러가 명시적으로 종료되어야 합니다.To end a profiling session, the profiler must be detached from all profiled processes and the profiler must be explicitly shut down. 응용 프로그램을 닫거나 VSPerfCmd /detach 옵션을 호출하여 샘플링 방법으로 프로파일링된 응용 프로그램에서 프로파일러를 분리할 수 있습니다.You can detach the profiler from an application that was profiled by using the sampling method by closing the application or by calling the VSPerfCmd /detach option. 그러고 나서 VSPerfCmd /shutdown 옵션을 호출하여 프로파일러를 끄고 프로파일링 데이터 파일을 닫습니다.You then call the VSPerfCmd /shutdown option to turn off the profiler and close the profiling data file. VSPerfClrEnv /off 명령은 프로파일링 환경 변수를 지웁니다.The VSPerfClrEnv /off command clears the profiling environment variables.

프로파일링 세션을 종료하려면To end a profiling session

  1. 대상 응용 프로그램에서 프로파일러를 분리하려면 다음 단계 중 하나를 수행합니다.Perform one of the following steps to detach the profiler from the target application:

    • 대상 응용 프로그램을 닫습니다.Close the target application.

      또는-or-

    • VSPerfCmd /detach 입력Type VSPerfCmd /detach

  2. 프로파일러를 종료합니다.Shut down the profiler. 유형:Type:

    VSPerfCmd /shutdownVSPerfCmd /shutdown

참고 항목See Also

독립 실행형 응용 프로그램 프로파일링 Profiling Stand-Alone Applications
.NET 메모리 데이터 뷰.NET Memory Data Views