Visual Studio 사용자 환경 개선 프로그램

VSCEIP(Visual Studio 사용자 환경 개선 프로그램)는 Microsoft가 시간이 지남에 따라 Visual Studio를 개선하는 데 도움이 되도록 설계되었습니다. 이 프로그램은 컴퓨터에서 사용자의 작업을 방해하지 않고 오류, 컴퓨터 하드웨어 및 사용자가 Visual Studio를 사용하는 방법에 대한 정보를 수집합니다. 수집되는 정보는 Microsoft가 개선할 기능을 식별하는 데 도움이 됩니다. 이 문서에서는 VSCEIP를 옵트인 또는 옵트아웃하는 방법을 설명하고 Microsoft에서 수집하는 데이터 형식 및 사용 방법에 대한 몇 가지 정보를 제공합니다. 확장 프로그램 작성자가 실수로 개인 정보나 중요한 정보를 노출하지 않도록 하는 방법에 대한 팁도 제공합니다.

진단 데이터 수집 옵트아웃

데이터 수집 목적과 데이터의 액세스 및 보존에 대한 제약 조건을 고려할 때 Visual Studio 및 Windows의 기본 개인 정보 설정을 사용하는 것이 좋습니다. 그러나 Visual Studio 환경 개선 프로그램을 옵트아웃할 수 있습니다. 옵트아웃할 경우 선택적 진단 데이터 수집을 옵트아웃하는 것입니다. Visual Studio가 안전하고 최신 상태이고 예상 대로 작동하는지 확인하려면 일부 진단 데이터 수집이 필요합니다. VSCEIP 옵트아웃을 선택하더라도 필요한 진단 데이터 수집 여부에는 영향을 주지 않습니다.

참고 항목

개인 데이터를 보거나 삭제하려면 GDPR에 대한 Windows 데이터 주체 요청에서 Microsoft의 지침을 살펴보세요. GDPR에 대한 일반 정보를 찾고 있는 경우 서비스 신뢰 포털의 GDPR 섹션을 참조하세요.

참고 항목

VSCEIP 원격 분석 옵트인 또는 출력 설정은 Visual Studio의 '문제 보고'에 적용되지 않습니다. 문제 로그를 보고할 때 '제출'을 클릭하여 사용 권한을 제공하는 경우에만 Microsoft로 전송됩니다. '문제 보고'에 제출하기 전에 로그를 관리하려면 피드백 데이터 프라이버시를 참조하세요.

옵트인 또는 옵트아웃

VSCEIP는 기본적으로 켜져 있습니다. 다음 지침을 따라 이 기능을 끄거나 다시 켤 수 있습니다.

  1. Visual Studio에서 도움말>프라이버시>프라이버시 설정을 선택합니다.

    Visual Studio 환경 개선 프로그램 대화 상자가 열립니다.

  2. 옵트아웃하려면 아니요, 참여하지 않겠습니다를 선택한 다음, 확인을 선택합니다. 옵트인하려면 예, 참여합니다(권장).를 선택한 다음, 확인을 선택합니다.

    Visual Studio Experience Improvement Program dialog

레지스트리 설정

Visual Studio용 빌드 도구를 설치하는 경우, VSCEIP를 구성하도록 레지스트리를 업데이트해야 합니다. Enterprise 고객은 레지스트리 기반 정책을 설정하여 VSCEIP를 옵트인하거나 옵트아웃하는 그룹 정책을 구성할 수 있습니다.

관련 레지스트리 키와 설정은 다음과 같습니다.

  • 64비트 OS의 경우, 키 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\16.0\SQM
  • 32비트 OS의 경우, 키 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\16.0\SQM
  • 그룹 정책을 사용하는 경우, 키 = HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\VisualStudio\SQM
  • 64비트 OS의 경우, 키 = HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VSCommon\17.0\SQM
  • 32비트 OS의 경우, 키 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VSCommon\17.0\SQM
  • 그룹 정책을 사용하는 경우, 키 = HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\VisualStudio\SQM

항목 = OptIn

값 = (DWORD)

  • 0은 옵트아웃된 것입니다(VSCEIP 끄기).
  • 1은 옵트인된 것입니다(VSCEIP 켜기).

주의

레지스트리를 잘못 편집하면 시스템에 심각한 손상을 줄 수 있습니다. 따라서 레지스트리를 변경하기 전에 컴퓨터의 중요한 데이터를 백업해 두어야 합니다. 변경 내용을 수동으로 적용한 후 문제가 발생할 경우 마지막으로 성공한 구성 시작 옵션을 사용할 수도 있습니다.

VSCEIP를 통해 수집, 처리 또는 전송되는 정보에 대한 자세한 내용은 Microsoft 개인정보처리방침을 참조하세요.

Visual Studio에서 수집한 시스템에서 생성된 로그

Visual Studio는 문제를 해결하고 제품의 품질을 향상시키기 위해 시스템에서 생성된 로그를 수집합니다. 여기서는 어떤 유형의 데이터가 수집되고 어떻게 사용되는지에 대한 몇 가지 정보를 제공합니다. 확장 프로그램 작성자가 실수로 개인 정보나 중요한 정보를 노출하지 않도록 하는 방법에 대한 팁도 제공합니다.

수집되는 데이터의 유형

Visual Studio에서는 크래시, UI 응답 없음 및 높은 CPU 또는 메모리 사용량에 대해 시스템에서 생성된 로그를 수집합니다. 제품 설치 또는 사용 중 발생하는 오류에 대한 정보도 수집합니다. 수집되는 데이터는 오류에 따라 다르며, 스택 추적, 메모리 덤프 및 예외 정보를 포함할 수 있습니다.

  • CPU 사용량이 많고 응답이 없는 경우 관련 Visual Studio 스레드의 스택 추적이 수집됩니다.

  • 일부 스레드의 스택 추적으로 문제의 근본 원인(예: 크래시, 응답 없음 또는 높은 메모리 사용량)을 확인할 수 없는 경우 메모리 ‘덤프’를 수집합니다. 덤프는 오류가 발생한 프로세스의 상태를 나타냅니다.

  • 디스크의 파일에 쓰려고 시도하는 중에 발생한 오류와 같은 예기치 않은 오류 상황이 발생한 경우 예외에 대한 정보를 수집합니다. 정보에는 예외의 이름, 예외가 발생한 스레드의 스택 추적, 예외와 관련된 메시지 및 특정 예외와 관련된 기타 정보가 포함됩니다.

    다음과 같은 수집된 데이터의 예에서는 예외 이름, 스택 추적 및 예외 메시지를 보여 줍니다.

    "Reserved.DataModel.Fault.Exception.TypeString": "System.IO.IOException",
    "Reserved.DataModel.Fault.Exception.StackTrace": "System.IO.__Error.WinIOError(Int32,String)\r\n
    System.IO.FileStream.Init(String,FileMode,FileAccess,Int32,Boolean,FileShare,Int32,FileOptions,SECURITY_ATTRIBUTES,String,Boolean,Boolean,Boolean)\r\n
    System.IO.FileStream..ctor(String,FileMode,FileAccess,FileShare,Int32,FileOptions,String,Boolean,Boolean,Boolean)\r\nSystem.IO.StreamWriter.CreateFile(String,Boolean,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean,Encoding,Int32,Boolean)\r\n
    System.IO.StreamWriter..ctor(String,Boolean)\r\n
    System.IO.File.CreateText(String)\r\n
    Microsoft.VisualStudio.Setup.Services.FileSystem.CreateText(String,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.WriteChannelManifest(IChannelManifest,String,String)\r\n
    Microsoft.VisualStudio.Setup.Cache.ChannelManifestRepository.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.Cache.CacheManager.AddChannel(ChannelManifestPair,Boolean)\r\n
    Microsoft.VisualStudio.Setup.ChannelManager.\<UpdateAsync>d__37.MoveNext()\r\n”,
    "Reserved.DataModel.Fault.Exception.Message": " The process cannot access the file 'C:\\Users\\[UserName]\\AppData\\Local\\Microsoft\\VisualStudio\\Packages\\_Channels\\4CB340F5\\channelManifest.json' because it is being used by another process."
    

시스템에서 생성된 로그 사용 방법

오류의 근본 원인을 확인하는 워크플로는 오류 유형 및 심각도에 따라 달라집니다.

오류 분류

로그에 따라 오류를 분류하고 계산하여 조사의 우선 순위를 지정합니다. 예를 들어 “System.IO.FileStream.Init”의 “System.IO.__Error.WinIOError”가 <x> 버전의 제품에서 500번 발생했으며 해당 버전에서 발생률이 가장 높은 경우가 있습니다.

추적할 작업 항목

우선 순위가 지정된 개별 오류에 대한 작업 항목이 생성되고 조사를 위해 엔지니어에게 할당됩니다. 이러한 작업 항목에는 일반적으로 오류 유형과 관련된 분류, 우선 순위 및 진단 정보가 포함됩니다. 이 정보는 오류에 대해 수집된 시스템 생성 로그에서 파생됩니다. 예를 들어 크래시에 대한 작업 항목에는 크래시가 발생하는 스택 추적이 포함될 수 있습니다.

오류 조사

엔지니어는 작업 항목에서 사용 가능한 정보를 사용하여 오류의 근본 원인을 확인합니다. 작업 항목에 있는 것보다 더 많은 정보가 필요한 경우가 있습니다. 이 경우 수집된 원래의 시스템 생성 로그를 참조합니다. 예를 들어 엔지니어는 제품 크래시를 파악하기 위해 메모리 덤프를 검사할 수 있습니다.

확장 프로그램 작성자를 위한 팁

확장 프로그램 작성자는 해당 모듈, 유형 및 메서드 이름에 개인 정보 또는 기타 민감한 정보를 사용하지 않음으로써 개인 정보 노출을 제한해야 합니다. 스택의 해당 코드에서 크래시 또는 유사한 오류 조건이 발생하면 해당 정보가 시스템에서 생성된 로그의 일부로 수집됩니다.