백그라운드 작업을 디버그하는 방법(Windows 런타임 앱)

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

Windows 이벤트 로그에서 백그라운드 작업 활성화 및 디버그 추적을 비롯한 백그라운드 작업을 디버그하는 방법을 알아봅니다.

알아야 할 사항

기술

사전 요구 사항

  • 이 항목에서는 기존 앱에 디버그해야 하는 백그라운드 작업이 있다고 가정합니다.

지침

백그라운드 작업 프로젝트가 올바르게 설정되어 있는지 확인합니다.

  • C# 및 C++에서 주 프로젝트가 백그라운드 작업 프로젝트를 참조하는지 확인합니다. 이 참조가 제대로 유지되지 않으면 백그라운드 작업이 앱 패키지에 포함되지 않습니다. 진입점 특성을 사용합니다.
  • C# 및 C++에서 백그라운드 작업 프로젝트의 Output type이 "WinMD 파일"인지 확인합니다.
  • JavaScript에서는 백그라운드 작업 작업자가 고유한 JavaScript 파일에 있어야 합니다.
  • 백그라운드 작업은 패키지 매니페스트에서 선언되어야 합니다. JavaScript 작업은 시작 페이지 특성을 사용하여 선언되고 다른 작업은 진입점 특성을 사용하여 선언됩니다.

백그라운드 작업을 수동으로 트리거하여 백그라운드 작업 코드 디버그

Microsoft Visual Studio Express 2012 for Windows 8을 통해 백그라운드 작업을 수동으로 트리거할 수 있습니다. 그런 다음 코드를 단계별로 실행하여 디버그할 수 있습니다.

  1. C#에서는 Run 메서드에 중단점을 삽입하거나 System.Diagnostics를 사용하여 디버깅 출력을 씁니다.

    C++에서는 Run 함수에 중단점을 삽입하거나 OutputDebugString을 사용하여 디버깅 출력을 씁니다.

    JavaScript에서는 백그라운드 작업 JavaScript 파일에 중단점을 삽입하거나 debug object를 사용하여 디버깅 출력을 씁니다.

  2. 디버그 위치 도구 메뉴에서 사용할 수 있는 일시 중단 드롭다운 메뉴를 사용하여 백그라운드 작업을 트리거합니다. 이 드롭다운에는 Visual Studio에서 활성화할 수 있는 백그라운드 작업의 이름이 표시됩니다.

    이를 위해서는 백그라운드 작업이 이미 등록되어 있고 여전히 트리거를 대기하고 있어야 합니다. 예를 들어 백그라운드 작업이 원샷 트리거로 등록되었고 해당 트리거가 이미 발생한 경우 실행해도 아무런 효과가 없습니다.

    참고  ControlChannelTrigger 또는 PushNotificationTrigger를 사용하는 백그라운드 작업이나 SmsReceived 트리거 유형과 함께 SystemTrigger를 사용하는 백그라운드 작업은 이 방식으로 활성화할 수 없습니다.

     

    백그라운드 작업 디버깅

  3. 백그라운드 작업이 활성화되면 디버거가 작업에 연결하고 VS에 디버그 출력을 표시합니다.

백그라운드 작업 활성화 디버그

백그라운드 작업 활성화는 정확하게 일치하는 세 가지 항목에 따라 다릅니다. 이 절차에서는 다음과 같은 모든 항목이 일치하는지 확인하는 방법을 보여 줍니다.

  • 백그라운드 작업 클래스의 이름 및 네임스페이스(Javascript의 경우 작업의 경로 및 파일 이름)
  • 패키지 매니페스트에 지정된 진입점 특성(Javascript의 경우 시작 페이지 특성)
  • 백그라운드 작업을 등록할 때 앱에서 지정한 진입점
  1. Visual Studio를 사용하여 백그라운드 작업의 진입점을 기록합니다.

    • C# 및 C++에서는 백그라운드 작업 프로젝트에 지정된 백그라운드 작업 클래스의 이름 및 네임스페이스를 기록합니다.
    • JavaScript에서는 백그라운드 작업 파일의 경로 및 파일 이름을 기록합니다.
  2. 매니페스트 디자이너를 사용하여 백그라운드 작업이 패키지 매니페스트에서 올바르게 선언되었는지 확인합니다.

    • C# 및 C++에서는 진입점 특성이 백그라운드 작업 이름과 클래스 이름과 차례로 일치해야 합니다. 예를 들면 Tasks.MyBackgroundTask와 같습니다.
    • JavaScript에서는 시작 페이지 특성이 백그라운드 작업 작업자에 대한 JavaScript 파일의 경로여야 합니다. 예를 들면 js\MyBackgroundTask.js와 같습니다.
    • 작업에 사용된 모든 트리거 유형도 지정해야 합니다.
    • ControlChannelTrigger 또는 PushNotificationTrigger를 사용하지 않는 경우에는 실행 파일을 지정하면 안 됩니다.
  3. Windows에만 해당합니다. Windows에서 백그라운드 작업을 활성화하는 데 사용한 진입점을 확인하려면 enable debug tracing하고 Windows 이벤트 로그를 사용합니다.

    이 절차를 수행할 때 이벤트 로그에 백그라운드 작업의 잘못된 진입점이나 트리거가 표시되면 앱에서 백그라운드 작업을 올바르게 등록할 수 없습니다. 이 작업에 대한 도움말은 백그라운드 작업을 등록하는 방법을 참조하세요.

    1. 시작 화면으로 이동하고 eventvwr.exe를 검색하여 이벤트 뷰어를 엽니다.
    2. 이벤트 뷰어에서 응용 프로그램 및 서비스 로그 -> Microsoft -> Windows -> BackgroundTaskInfrastructure로 이동합니다.
    3. 작업 창에서 보기 -> 분석 및 디버그 로그 표시를 선택하여 진단 로깅을 사용하도록 설정합니다.
    4. 진단 로그를 선택하고 로그 사용을 클릭합니다.
    5. 이제 앱을 사용하여 다시 백그라운드 작업을 등록하고 활성화합니다.
    6. 진단 로그에서 자세한 오류 정보를 봅니다. 여기에는 백그라운드 작업에 대해 등록된 진입점이 포함됩니다.

이벤트 뷰어의 백그라운드 작업 디버그 정보

백그라운드 작업 및 Visual Studio 패키지 배포

백그라운드 작업을 사용하는 앱을 Visual Studio를 사용하여 배포하고 매니페스트 디자이너에서 지정한 버전(주 및/또는 부)을 업데이트하는 경우 이후에 Visual Studio를 사용하여 앱을 다시 배포하면 앱의 백그라운드 작업이 정지할 수 있습니다. 이 문제는 다음과 같이 해결할 수 있습니다.

  • Visual Studio 대신 Windows PowerShell을 통해 패키지와 함께 생성된 스크립트를 실행하여 업데이트된 앱을 배포합니다.
  • 이미 Visual Studio를 사용하여 앱을 배포했고 앱의 백그라운드 작업이 지금 정지된 경우 다시 부팅하거나 로그오프한 다음 로그인하여 앱의 백그라운드 작업이 다시 작동하게 합니다.
  • C# 프로젝트에서 "Always re-install my package(내 패키지 항상 다시 설치)" 디버깅 옵션을 선택하여 이 문제를 방지할 수 있습니다.
  • 앱이 최종 배포되어 패키지 버전을 증가시킬 수 있을 때까지 기다립니다(디버그하는 중에 변경하지 않음).

설명

백그라운드 작업을 디버그하기 위한 추가 팁은 다음과 같습니다.

  • JavaScript 백그라운드 작업은 완료될 때 **close()**를 호출해야 합니다. 백그라운드 작업에서 **close()**를 호출하지 않으면 작업 프로세스가 계속 실행됩니다. 그러면 배터리 수명이 소모되고 예기치 않은 동작이 발생할 수 있습니다.
  • 앱이 백그라운드 작업을 다시 등록하기 전에 기존 백그라운드 작업 등록을 확인하도록 하세요. 동일한 백그라운드 작업을 여러 번 등록하면 백그라운드 작업이 트리거될 때마다 두 번 이상 실행되어 예기치 않은 결과가 발생할 수 있습니다. 이 작업에 대한 도움말은 보류 중인 백그라운드 작업 목록을 가져오는 방법을 참조하세요.
  • 백그라운드 작업에서 잠금 화면에 액세스해야 하는 경우 백그라운드 작업을 디버그하기 전에 앱을 잠금 화면에 배치해야 합니다. 잠금 화면을 지원하는 앱에 대한 매니페스트 옵션을 지정하는 방법에 대한 정보는 잠금 화면에 알림을 표시하는 방법응용 프로그램 매니페스트에서 백그라운드 작업을 선언하는 방법을 참조하세요.
  • Windows 8.1부터 백그라운드 작업 등록 매개 변수는 등록 시 유효성이 검사됩니다. 등록 매개 변수가 하나라도 유효하지 않으면 오류가 반환됩니다. 백그라운드 작업 등록이 실패할 경우 앱이 시나리오를 적절하게 처리하도록 해야 합니다. 대신 앱이 작업 등록을 시도한 후 유효한 등록 개체를 사용하면 충돌할 수 있습니다. 예를 들어 앱은 조건문을 사용하여 등록 오류를 확인한 다음 다른 매개 변수 값으로 실패한 등록을 다시 시도할 수 있습니다.

Visual Studio를 사용하여 백그라운드 작업을 디버그하는 방법에 대해서는 Windows 스토어 앱에서 일시 중단, 다시 시작 및 백그라운드 이벤트를 트리거하는 방법을 참조하세요.

관련 항목

빠른 시작: 백그라운드 작업 만들기 및 등록

백그라운드 작업을 등록하는 방법

응용 프로그램 매니페스트에서 백그라운드 작업을 선언하는 방법

백그라운드 작업에 대한 지침 및 검사 목록

매니페스트 디자이너

Windows 스토어 앱에서 일시 중단, 다시 시작 및 백그라운드 이벤트를 트리거하는 방법

Visual Studio 코드 분석을 사용하여 Windows 스토어 앱의 코드 품질 분석