다음을 통해 공유


성능 및 진단 페이지에서 분석 도구 실행

Windows 및 Windows Phone에 적용

Visual Studio 프로파일러와 진단 도구를 사용하여 Windows 스토어 및 Windows Phone 앱의 성능, 메모리 사용, 에너지 소비량을 분석할 수 있습니다. 성능 및 진단 허브를 사용하면 이러한 도구를 간편하게 선택 및 실행하고, 한 번의 진단 실행으로 여러 가지 도구를 결합하고, 만들어지는 보고서를 관리할 수 있습니다. 대부분의 배포 대상에서 도구를 실행할 수 있습니다. Windows Phone 앱의 경우 휴대폰 또는 에뮬레이터를 사용합니다. Windows 스토어 앱의 경우 Visual Studio 컴퓨터, 시뮬레이터 또는 원격 PC를 사용합니다. 데이터를 수집한 후 진단 보고서에 데이터의 타임라인 그래프와 자세히 보기가 표시됩니다. 성능 및 진단 보고서 필터 및 설정을 사용하면 데이터의 중요한 부분에 집중할 수 있습니다.

성능 및 진단 허브의 도구

성능 및 진단 허브는 특정 종류의 앱(XAML 및 C#/VB/C++ 또는 HTML 및 JavaScript)에서 사용할 수 있는 도구와 한 번의 진단 실행에 사용할 수 있는 도구를 보여 줍니다.

CPU 사용(모두)

에너지 소비량(모두)

메모리 사용량(C#/VB/C++)

JavaScript 메모리 사용량

XAML UI 응답성

HTML UI 응답성

JavaScript 함수 타이밍

이 문서의 내용

  • 빠른 시작: 진단 데이터 수집

  • 진단 데이터 수집

    진단 데이터에서 위치를 식별하기 위해 사용자 표시 추가 | 시작 프로젝트 설정 | 분석 대상 설정 | 진단 세션에서 실행할 도구 선택 | 진단 세션 시작 및 중지

  • 진단 세션 파일 열기

  • 성능 및 진단 데이터 페이지

  • 문제 해결

빠른 시작: 진단 데이터 수집

참고

성능 및 진단 도구를 실행하려면 관리자 권한이 있어야 합니다.관리자로서 Visual Studio를 실행하거나 진단 세션을 시작할 때 관리자로서 도구를 실행하는 방법을 선택할 수 있습니다.

  1. Visual Studio에서 프로젝트를 엽니다.

  2. 배포 위치를 설정합니다.

    Windows Phone에만 적용

    Windows Phone 앱은 휴대폰 또는 Visual Studio 에뮬레이터 중 하나에 배포할 수 있습니다.

    Windows에만 적용

    Windows 스토어 앱은 Visual Studio 컴퓨터, Visual Studio 시뮬레이터 또는 네트워크에 연결된 PC 또는 태블릿에 배포할 수 있습니다.

    참고: 원격 PC 또는 태블릿에서 진단 세션을 실행하려면 Visual Studio 원격 도구가 원격 대상에 설치 및 실행되어야 합니다. 자세한 내용은 Visual Studio를 사용하여 원격 컴퓨터에서 Windows 스토어 앱 실행를 참조하세요.

    디버거 도구 모음의 디버그 위치 목록에서 앱의 배포 위치를 선택합니다. 다음은 휴대폰 앱 목록입니다.

    Windows Phone 앱의 배포 대상 목록

  3. 성능 및 진단 세션을 엽니다. 디버그 메뉴에서 성능 및 진단(바로 가기 키: Alt + F2)을 선택합니다.

  4. 성능 및 진단 허브에서 세션에서 실행할 하나 이상의 도구를 선택합니다. 프로젝트 형식 및 프로그래밍 언어에 적용되는 도구만 표시됩니다. 진단 도구를 선택하면 같은 진단 세션에서 실행할 수 없는 도구 선택을 사용할 수 없게 설정됩니다. JavaScript 앱의 경우 선택이 다음과 같이 표시될 수 있습니다.

    하나 이상의 진단 도구를 선택합니다.

  5. 진단 세션을 시작하려면 시작을 선택합니다.

  6. 데이터를 수집할 시나리오를 실행합니다.

    세션을 실행하는 동안 일부 도구는 성능 및 진단 페이지에 실시간 데이터의 그래프를 표시합니다.

    성능 및 진단 페이지에서 데이터를 수집합니다.

  7. 진단 세션을 종료하려면 수집 중지를 선택합니다.

진단 데이터 수집

진단 데이터에서 위치를 식별하기 위해 사용자 표시 추가 | 시작 프로젝트 설정 | 분석 대상 설정 | 진단 세션에서 실행할 도구 선택 | 진단 세션 시작 및 중지

진단 데이터에서 위치를 식별하기 위해 사용자 표시 추가

프로파일링 데이터에 사용자 표시를 추가하여 타임라인 눈금자의 영역을 식별할 수 있습니다.

타임라인의 사용자 표시

이 표시는 메서드 실행 시 타임라인에 주황색 삼각형으로 표시됩니다. 표시 위로 마우스를 가져가면 메시지 및 시간이 도구 설명으로 표시됩니다. 두 개 이상의 사용자 표시가 서로 가까이 있으면 표시가 병합되고 도구 설명 데이터가 결합됩니다. 타임라인을 확대하면 표시가 분리되어 표시됩니다.

참고

  • JavaScript 함수 타이밍 보고서에는 사용자 표시가 표시되지 않습니다.

  • CPU 사용 도구가 진단 세션에 사용된 유일한 도구일 경우 보고서에는 사용자 표시가 표시되지 않습니다.

  • 추가 예제는 Windows SDK 샘플 LoggingSession 샘플을 참조하세요.

C#, Visual Basic, C++ 코드에 표시 추가

C#, Visual Basic, C++ 코드에 사용자 표시를 추가하려면 먼저 Windows.Foundation.Diagnostics LoggingChannel 개체를 만듭니다. 그런 다음 LoggingChannel.LogMessage 메서드의 표시할 코드의 지점에 호출을 삽입합니다. 호출에 LoggingLevel.Information을 사용합니다.

메서드가 실행되면 메시지와 함께 프로파일링 데이터에 사용자 표시가 추가됩니다.

참고

코드에 로깅 채널 추가 시 다음과 같은 약간의 문제가 있습니다.

열린 각 로깅 채널의 이름은 고유해야 합니다. 열린 채널과 이름이 같은 새 로깅 채널을 만들려고 시도하면 예외가 발생합니다.

코드에서 이름 중복을 피하는 방법 한 가지는 정적(VB의 경우 Shared) 메서드를 사용하여 고유성이 보장된 이름을 지닌 LoggingChannel을 반환하는 것입니다. 다음은 GUID를 사용하여 고유성을 제공하는 예제입니다.

//using Windows.Foundation.Diagnostics
public static LoggingChannel GetLoggingChannel()
{
    var name = Guid.NewGuid().ToString();
    return new LoggingChannel(name);
}
'Imports Windows.Foundation.Diagnostics
Public Shared Function GetLoggingChannel() As LoggingChannel
    Dim Name = Guid.NewGuid().ToString()
    GetLoggingChannel = New LoggingChannel(Name)
End Function
//using namespace Windows::Foundation::Diagnostics;
static LoggingChannel^ MainPage::GetLoggingChannel()
{
    auto name = (ref new Guid())->ToString();
    auto channel = ref new LoggingChannel(name);
    return channel;
}

C# 및 VB: LoggingChannel 개체를 삭제해야 함

LoggingChannel 개체가 시스템 리소스를 사용하므로 LoggingChannel의 C# 및 VB 프로젝션은 System.IDisposable 인터페이스에서 파생되어 CLR 가비지 수집기에서 개체를 제거하기 전에 리소스를 해제할 수 있습니다. C++ 코드에서 LoggingChannel 개체가 범위를 벗어나면 바로 이 개체가 제거되고 리소스가 해제됩니다. 다음은 진단 세션 파일에 사용자 표시를 추가하는 데 사용할 수 있는 패턴의 예제입니다.

void MyScenario()
{
    var logLevel = LoggingLevel.Information;
    using(var channel = Utils.GetLoggingChannel())
    {
        channel.LogMessage("MyScenario Start", logLevel);
        // scenario code
        channel.LogMessage("MyScenario End", logLevel);
    }
}
Sub MyScenario()
    Dim logLevel = LoggingLevel.Information
    Using channel As LoggingChannel = Utils.GetLoggingChannel()
        channel.LogMessage("MyScenario Start", logLevel)
        'scenario code
        channel.LogMessage("MyScenario End", logLevel)
    End Using
End Sub
// m_channel resources are released when containing 
// object goes out of scope
LoggingChannel^ m_channel = MainPage::GetLoggingChannel();
LoggingLevel m_logLevel = LoggingLevel::Information;

void MyScenario()
{
    m_channel->LogMessage(L"MyScenario Start", m_logLevel);
    //scenario code
    m_channel->LogMessage(L"MyScenario Start", m_logLevel);
}

JavaScript 코드에 표시 추가

사용자 표시를 추가하려면 표시할 코드의 지점에 다음 코드를 추가합니다.

if (performance && performance.mark) {
    performance.mark(markDescription);
}

markDescription은 사용자 표시 도구 설명에 표시할 메시지가 포함되는 문자열입니다.

시작 프로젝트 설정

솔루션에 여러 개의 앱 프로젝트가 포함되어 있으면 분석할 프로젝트가 시작 프로젝트로 설정되어 있는지 확인합니다. 솔루션 탐색기에서 프로젝트를 선택하고 컨텍스트 메뉴에서 시작 프로젝트로 설정을 선택합니다.

시작 프로젝트로 설정을 선택합니다.

배포 위치 설정

Visual Studio 컴퓨터에 직접 연결된 Windows Phone 또는 Visual Studio 휴대폰 에뮬레이터에서 휴대폰 앱에 대한 진단 세션을 실행할 수 있습니다. Visual Studio 컴퓨터, Visual Studio 장치 시뮬레이터 또는 네트워크를 통해 Visual Studio에 연결되어 있거나 이더넷과 USB를 연결하는 케이블을 통해 Visual Studio 컴퓨터에 직접 연결된 원격 장치에서 Windows 스토어 앱을 실행할 수 있습니다. 프로젝트 속성의 디버그 페이지에서 배포 대상을 설정하거나 Visual Studio 도구 모음의 디버그 위치에서 대상을 선택할 수 있습니다. 다음은 Windows 스토어 앱의 배포 목록입니다.

Windows 스토어 앱의 배포 대상 목록

디버그 위치 도구 모음에서 선택한 사항이 프로젝트 속성에 저장됩니다.

Windows에만 적용

  • 원격 Windows 스토어 장치에서 진단 세션을 실행하려면 Visual Studio 원격 도구가 원격 대상에 설치 및 실행되어야 합니다. 자세한 내용은 Visual Studio를 사용하여 원격 컴퓨터에서 Windows 스토어 앱 실행를 참조하세요.

  • 디버그 위치 목록에서 원격 컴퓨터를 선택할 때 원격 장치를 지정하지 않은 경우 나타나는 원격 연결 대화 상자에서 장치를 지정합니다.

    원격 연결 대화 상자

  • 원격 장치 대상을 지정한 후 프로젝트 속성의 디버그 페이지를 사용하여 새 장치로 변경해야 합니다.

  • USB와 이더넷 연결 케이블을 사용하여 Visual Studio 컴퓨터에 원격 장치를 연결하는 경우 원격 연결 대화 상자에서 원격 장치의 IP 주소를 지정합니다.

분석 대상 설정

Visual Studio 프로젝트에서 앱을 시작할 수 있는 것 외에, 다른 대상에서 진단 세션을 실행할 수도 있습니다. 예를 들어 Windows 앱 스토어에서 설치된 앱의 버전에서 성능 문제를 진단할 수 있습니다.

진단 도구 분석 대상을 선택합니다.

Windows에만 적용

이미 장치에 설치된 Windows 스토어 앱을 시작하거나 이미 실행 중인 Windows 스토어 앱에 진단 도구를 연결할 수 있습니다. 실행 중인 응용 프로그램 또는 설치된 응용 프로그램을 선택하면 지정된 배포 대상에서 응용 프로그램을 검색하는 목록에서 응용 프로그램을 선택하는 것입니다.

진단을 위해 실행 중이거나 설치된 응용 프로그램을 선택합니다.

Windows Phone에만 적용

Internet Explorer를 선택하면 url을 지정하고 휴대폰 배포 대상을 변경할 수 있습니다.

Internet Explorer에 표시할 URL을 지정합니다.

진단 세션에서 실행할 도구 선택

성능 및 진단 허브에서 진단 세션에서 실행할 하나 이상의 도구를 선택합니다. 프로젝트 형식 및 프로그래밍에 적용되는 도구만 표시됩니다. 진단 도구를 선택하면 같은 진단 세션에서 실행할 수 없는 도구 선택을 사용할 수 없게 설정됩니다. JavaScript 앱의 경우 선택이 다음과 같이 표시될 수 있습니다.

진단 세션 시작 및 중지

진단 세션을 시작하려면 시작을 선택합니다.

진단 세션을 종료하고 데이터 분석을 시작하려면 페이지의 아래쪽에서 수집 중지를 선택합니다.

진단 세션 파일 열기

진단 세션에서 데이터 수집을 중지하면 데이터는 즉시 분석된 다음 성능 및 진단 보고서에 표시됩니다.

성능 및 진단 허브에서 최근에 열었던 목록에서 저장된 진단 세션 파일을 열 수도 있습니다.

저장된 진단 세션 파일을 엽니다.

성능 및 진단 허브의 맨 위쪽에 있는 표시 또는 숨김 단추를 선택하여 최근에 사용한 파일 목록을 확장 또는 축소합니다.

성능 및 진단 보고서

성능 및 진단 데이터 페이지

1단계

타임라인에는 프로파일링 세션 길이, 응용 프로그램 수명 주기 시작 이벤트 및 사용자 표시가 표시됩니다.

2단계

파란색 막대를 끌어 타임라인의 부분의 선택하여 보고서를 타임라인의 일부분으로 제한할 수 있습니다.

3단계

도구는 하나 이상의 마스터 그래프를 표시합니다. 진단 세션이 여러 가지 도구로 만들어질 경우 모든 마스터 그래프가 표시됩니다.

4단계

개별 그래프를 축소 또는 확장할 수 있습니다.

5단계

데이터에 여러 가지 도구의 정보가 포함되어 있으면 도구의 세부 정보는 탭 아래에서 수집됩니다.

6단계

도구는 하나 이상의 자세히 보기가 있을 수 있습니다. 뷰는 타임라인의 선택된 부분으로 필터링됩니다.

문제 해결

진단 이벤트가 삭제되었습니다.보고서에서 일부 정보가 누락되었거나 부정확할 수 있습니다.

성능 및 진단 도구의 데이터 수집기는 메모리와 CPU를 많이 사용할 수 있습니다. 데이터 수집기에서 진단 이벤트 전체를 로그할 수 없는 경우 성능 및 진단 페이지 상단의 알림 표시줄에 메시지가 표시됩니다. 보고서의 데이터가 누락되거나 잘못되었을 수 있습니다.

이 문제를 확인하려면 다음 단계에 따라 컴퓨터의 리소스를 확보한 다음 진단 세션을 다시 실행하세요.

  1. 진단 세션의 일부가 아닌 다른 앱을 닫습니다.

  2. 데이터를 더 적게 수집하도록 시나리오를 단순화합니다.

  3. 단일 세션에서 사용하는 진단 도구의 수를 줄입니다.

참고 항목

기타 리소스

성능(Windows 스토어 앱)

Windows SDK LoggingSession 샘플