방법: 명령줄을 통해 네이티브 독립 실행형 응용 프로그램에 프로파일러를 연결하여 동시성 데이터 수집How to: Attach the Profiler to a Native Stand-Alone Application and Collect Concurrency Data by Using the Command Line

이 항목은 Visual StudioVisual Studio 프로파일링 도구 명령줄 도구를 사용하여 프로파일러를 실행 중인 네이티브(C/C++) 독립 실행형 응용 프로그램에 연결하고 스레드 경합 데이터를 수집하는 방법을 설명합니다.This topic describes how to use Visual StudioVisual Studio Profiling Tools command-line tools to attach the profiler to a running native (C/C++) stand-alone application and collect thread contention data.

참고

프로파일링 도구의 명령줄 도구는 Visual Studio 설치 디렉터리의 \Team Tools\Performance Tools 하위 디렉터리에 있습니다.Command-line tools of the Profiling Tools are located in the \Team Tools\Performance Tools subdirectory of the Visual 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.

프로파일러가 응용 프로그램에 연결되면 데이터 수집을 일시 중지하고 다시 시작할 수 있습니다.While the profiler is attached to the application, you can pause and resume data collection. 프로파일링 세션을 종료하려면 프로파일러가 응용 프로그램에 연결되어 있으면 안 되고 프로파일러가 명시적으로 종료되어야 합니다.To end a profiling session, the Profiler must no longer be attached to the application, and the Profiler must be explicitly shut down.

실행 중인 네이티브 응용 프로그램에 프로파일러 연결Attaching the Profiler to a Running Native Application

실행 중인 네이티브 응용 프로그램에 프로파일러를 연결하려면To attach the Profiler to a running native application

  1. 명령 프롬프트에서 다음 명령을 입력합니다.At a command prompt, type the following command:

    VSPerfCmd /start:concurrencyVSPerfCmd /start:concurrency

    /start:concurrency 옵션과 다음 표의 모든 옵션을 함께 사용할 수 있습니다.You can use any of the options in the following table with the /start:concurrencyoption.

    옵션Option 설명Description
    /user :[Domain\]Username/user :[Domain\]Username 프로파일러에 대한 액세스 권한을 부여할 계정의 선택적 도메인 및 사용자 이름을 지정합니다.Specifies the optional domain and user name of the account to be granted access to the profiler.
    /crosssession/crosssession 프로세스 프로파일링 기능을 다른 로그온 세션에서 사용하도록 설정합니다.Enables profiling of processes in other logon sessions.
    /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. 기본값은 500입니다.The default value is 500.
    /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.
  2. 다음 명령을 입력하여 프로파일러를 대상 응용 프로그램에 연결합니다.Attach the profiler to the target application by typing the following command:

    VSPerfCmd /attach :{PID|ProcName}VSPerfCmd /attach :{PID|ProcName}

    PID는 대상 응용 프로그램의 프로세스 ID를 지정합니다.PID specifies the process ID of the target application. [Windows 작업 관리자]에서 모든 실행 중인 프로세스의 프로세스 ID를 볼 수 있습니다.You can view the process IDs of all running processes in Windows Task Manager.

데이터 수집 제어Controlling Data Collection

대상 응용 프로그램이 실행 중이면 VSPerfCmd.exe 옵션을 사용하여 파일에 대한 데이터 쓰기를 시작하고 중지하는 방식으로 데이터 수집을 제어할 수 있습니다.While 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. 데이터 수집을 제어하여 응용 프로그램의 시작 또는 종료와 같이 프로그램 실행의 특정 부분에 대한 데이터를 수집할 수 있습니다.By controlling data collection, you can collect data for a specific part of program execution, such as the starting or shutting down of the application.

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

  • 다음 표의 옵션 쌍을 사용하여 데이터 수집을 시작 및 중지합니다.The pairs of options in the following table 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 the process ID (PID) specifies.
    /attach :{PID|ProcName} /detach[:{PID|ProcName}]/attach :{PID|ProcName} /detach[:{PID|ProcName}] /attach는 프로세스 ID(PID) 또는 프로세스 이름(ProcName)으로 지정된 프로세스에 대한 데이터 수집을 시작합니다./attach starts to collect data for the process that the process ID (PID) or process name (ProcName) specifies. /detach는 지정된 프로세스 또는 모든 프로세스(프로세스가 지정되지 않은 경우)에 대한 데이터 수집을 중지합니다./detach stops data collection for the specified process or for all processes if no process is specified.

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

프로파일링 세션을 종료하려면 프로파일러가 데이터를 수집하고 있지 않아야 합니다.To end a profiling session, the profiler must not be collecting data. 응용 프로그램을 닫거나 VSPerfCmd /detach 옵션을 호출하여 샘플링 방법으로 프로파일링된 응용 프로그램에서 데이터를 수집하는 작업을 중지할 수 있습니다.You can stop collecting data from an application that is profiled with the sampling method by closing the application or by invoking the VSPerfCmd /detach option. 그러고 나서 VSPerfCmd /shutdown 옵션을 호출하여 프로파일러를 끄고 프로파일링 데이터 파일을 닫습니다.You then invoke the VSPerfCmd /shutdown option to turn the profiler off and close the profiling data file.

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

  1. 프로파일러를 닫거나 다음 명령을 입력하여 대상 응용 프로그램에서 프로파일러를 분리합니다.Detach the profiler from the target application by closing it or by typing the following command:

    VSPerfCmd /detachVSPerfCmd /detach

  2. 다음 명령을 입력하여 프로파일러를 종료합니다.Shut down the profiler by typing the following command:

    VSPerfCmd /shutdownVSPerfCmd /shutdown