Visual C++ 도구 집합 또는 설명서의 문제를 보고하는 방법How to report a problem with the Visual C++ toolset or documentation

Microsoft Visual C++ 컴파일러, 링커 또는 기타 도구 및 라이브러리에 문제가 발생하는 경우 문제를 파악하고자 합니다.If you encounter problems with the Microsoft Visual C++ compiler, linker, or other tools and libraries, we want to know about them. 문제가 설명서에 있으면 해당 내용도 알고 싶습니다.If the issue is in our documentation, we want to know about that, too.

C++ 도구 집합 문제를 보고하는 방법How to report a C++ toolset issue

문제를 알리는 가장 좋은 방법은 발생한 문제에 대한 설명, 프로그램 빌드 방법에 대한 세부 정보 및 다른 컴퓨터에서 문제를 재현하는 데 사용할 수 있는 완전한 테스트 사례인 재현을 보내는 것입니다.The best way to let us know about a problem is to send us a report that includes a description of the problem you've encountered, details about how you're building your program, and a repro, a complete test case we can use to reproduce the problem on our own machines. 이 정보를 통해 문제가 코드에 있고 사용자 환경에서만 발생하는 문제가 아님을 빠르게 확인할 수 있으며, 다른 버전의 컴파일러에 영향을 주는지 여부를 확인하고 원인을 진단할 수 있습니다.This information lets us quickly verify that the problem exists in our code and is not local to your environment, to determine whether it affects other versions of the compiler, and to diagnose its cause.

아래 섹션에서는 좋은 보고서를 만드는 방법, 발견한 문제 유형에 대한 재현을 생성하는 방법 및 제품 팀에 보고서를 보내는 방법에 대해 살펴보겠습니다.In the sections below, you'll read about what makes a good report, how to generate a repro for the kind of issue you've found, and how to send your report to the product team. 보고서는 Microsoft와 다른 개발자에게 중요합니다.Your reports are important to us and to other developers like you. Visual C++ 개선에 도움 주셔서 감사합니다!Thank you for helping us improve Visual C++!

보고서를 준비하는 방법How to prepare your report

완전한 정보가 없으면 발생한 문제를 다른 컴퓨터에서 재현하는 것이 매우 어렵기 때문에 고품질 보고서를 만드는 것이 중요합니다.Creating a high-quality report is important because it is very difficult to reproduce the problem you encountered on our own machines without complete information. 보고서가 향상될수록 더 효과적으로 문제를 재현하고 진단할 수 있습니다.The better your report is, the more effectively we are able recreate and diagnose the problem.

보고서에는 최소한 다음 정보가 포함되어야 합니다.At a minimum, your report should contain

  • 사용 중인 도구 집합의 전체 버전 정보The full version information of the toolset you're using.

  • 코드를 빌드하는 데 사용된 전체 cl.exe 명령줄The full cl.exe command line used to build your code.

  • 발생한 문제에 대한 자세한 설명A detailed description of the problem you encountered.

  • 재현: 문제를 보여주는 완전하고 간소화된 자체 포함 소스 코드 예제입니다.A repro: a complete, simplified, self-contained source code example that demonstrates the problem.

필요한 특정 정보와 해당 정보를 찾을 수 있는 위치 그리고 좋은 재현을 만드는 방법에 대해 자세히 읽어보세요.Read on to learn more about the specific information we need and where you can find it, and how to create a good repro.

도구 집합 버전The toolset version

다른 컴퓨터에서 동일한 도구 집합을 대상으로 재현을 테스트할 수 있도록 문제의 원인이 될 수 있는 도구 집합의 전체 버전 정보 및 대상 아키텍처가 필요합니다.We need the full version information and the target architecture of the toolset that causes the problem so that we can test your repro against the same toolset on our machines. 문제를 재현할 수 있는 경우 이 정보는 동일한 문제가 발생하는 다른 도구 집합 버전을 조사하는 시작점을 제공하기도 합니다.If we can reproduce the problem, this information also gives us a starting point to investigate which other versions of the toolset exhibit the same problem.

사용 중인 컴파일러의 전체 버전을 보고하려면To report the full version of the compiler you're using

  1. 프로젝트를 빌드하는 데 사용된 Visual Studio 버전 및 구성 아키텍처와 일치하는 개발자 명령 프롬프트를 엽니다.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project. 예를 들어 x64 대상에 x64 Visual Studio 2017을 사용하여 빌드하는 경우 VS 2017용 x64 Native Tools 명령 프롬프트를 선택합니다.For example, if you build by using Visual Studio 2017 on x64 for x64 targets, choose x64 Native Tools Command Prompt for VS 2017. 자세한 내용은 개발자 명령 프롬프트 바로 가기를 참조하세요.For more information, see Developer command prompt shortcuts.

  2. 개발자 명령 프롬프트 콘솔 창에서 cl /Bv 명령을 입력합니다.In the developer command prompt console window, enter the command cl /Bv.

다음과 유사한 출력이 표시됩니다.The output should look similar to this:

C:\Users\username\Source>cl /Bv
Microsoft (R) C/C++ Optimizing Compiler Version 19.14.26428.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

Compiler Passes:
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\cl.exe:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c1.dll:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c1xx.dll:      Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\c2.dll:        Version 19.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\link.exe:      Version 14.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\mspdb140.dll:  Version 14.14.26428.1
 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.14.26428\bin\HostX86\x86\1033\clui.dll: Version 19.14.26428.1

cl : Command line error D8003 : missing source filename

전체 출력을 복사하여 보고서에 붙여넣습니다.Copy and paste the entire output into your report.

명령줄The command line

다른 컴퓨터에서 동일한 방식으로 빌드하기 위해 코드를 빌드하는 데 사용된 정확한 명령줄(cl.exe 및 모든 인수)이 필요합니다.We need the exact command line (cl.exe and all of its arguments) used to build your code, so that we can build it in exactly the same way on our machines. 발생한 문제가 특정 인수 또는 인수 조합을 사용하여 빌드하는 경우에만 나타날 수도 있기 때문에 이 정보는 중요합니다.This is important because the problem you've encountered might only exist when building with a certain argument or combination of arguments.

이 정보를 찾을 수 있는 최상의 위치는 문제가 발생한 직후의 빌드 로그입니다.The best place to find this information is in the build log immediately after experiencing the problem. 이렇게 하면 문제를 초래하는 동일한 인수가 명령줄에 정확히 포함됩니다.This ensures that the command line contains exactly the same arguments that might be contributing to the problem.

명령줄의 내용을 보고하려면To report the contents of the command line

  1. CL.command.1.tlog 파일을 찾아서 엽니다.Locate the CL.command.1.tlog file and open it. 기본적으로 이 파일은 \Visual Studio 버전\Projects\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog의 Documents 폴더에, 또는 \Source\Repos\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog의 User 폴더에 있습니다.By default, this file is located in your Documents folder in \Visual Studio version\Projects\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog, or in your User folder under \Source\Repos\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog. 다른 빌드 시스템을 사용하거나 프로젝트의 기본 위치를 변경한 경우 이 파일이 다른 위치에 있을 수도 있습니다.It may be in a different location if you use another build system or if you have changed the default location for your project.

    이 파일 내에서 소스 코드 파일의 이름과 각 파일을 컴파일하는 데 사용된 명령줄 인수를 각 줄에 하나씩 찾을 수 있습니다.Inside this file, you'll find the names of source code files followed by the command line arguments used to compile them, each on separate lines.

  2. 문제가 발생하는 소스 코드 파일의 이름을 포함하는 줄을 찾습니다. 그 아래 줄에는 해당 cl.exe 명령 인수가 포함되어 있습니다.Locate the line that contains the name of the source code file where the problem occurs; the line below it contains the corresponding cl.exe command arguments.

전체 명령줄을 복사하여 보고서에 붙여넣습니다.Copy and paste the entire command line into your report.

문제에 대한 설명A description of the problem

다른 컴퓨터에서도 동일한 결과가 표시되는지 확인할 수 있도록 발생한 문제에 대한 자세한 설명이 필요합니다. 이 정보는 수행하려던 작업과 예상한 동작을 파악하는 데에도 유용할 수 있습니다.We need a detailed description of the problem you've encountered so that we can verify that we see the same effect on our machines; its also sometimes useful for us to know what you were trying to accomplish, and what you expected to happen.

도구 집합에서 표시한 정확한 오류 메시지 또는 정확한 런타임 동작을 알려주세요.Please provide the exact error messages given by the toolset, or the exact runtime behavior you see. 문제를 올바르게 재현했는지 확인하려면 이 정보가 필요합니다.We need this information to verify that we've properly reproduced the issue. 마지막 오류 메시지뿐 아니라 모든 컴파일러 출력을 포함해주세요.Please include all of the compiler output, not just the last error message. 보고하신 문제를 초래한 모든 항목을 살펴보아야 합니다.We need to see everything that led up to the issue you report. 명령줄 컴파일러를 사용하여 문제를 복제할 수 있는 경우 해당 컴파일러 출력을 보내주시는 것이 가장 좋으며, IDE 및 다른 빌드 시스템은 표시되는 오류 메시지를 필터링하거나 오류 메시지의 첫 번째 줄만 캡처할 수 있습니다.If you can duplicate the issue by using the command line compiler, that compiler output is preferred; the IDE and other build systems may filter the error messages you see, or only capture the first line of an error message.

컴파일러가 잘못된 코드를 수락하고 진단을 생성하지 않는 문제인 경우 보고서에 해당 내용을 기록해 주세요.If the issue is that the compiler accepts invalid code and does not generate a diagnostic, please note this in your report.

런타임 동작 문제를 보고하려는 경우 프로그램에서 출력하는 내용의 정확한 복사본과 보려고 하는 내용을 포함시킵니다.To report a runtime behavior problem, include an exact copy of what the program prints out, and what you expect to see. 출력 문에 포함하는 것이 가장 좋습니다(예: printf("This should be 5: %d\n", actual_result);).Ideally, this is embedded in the output statement itself, for example, printf("This should be 5: %d\n", actual_result);. 프로그램이 충돌하거나 중단되는 경우 그 내용도 기록해 주세요.If your program crashes or hangs, mention that as well.

시도해 보신 해결 방법처럼 발생한 문제를 진단하는 데 도움이 될 만한 다른 정보도 추가해 주세요.Add any other details that might help us diagnose the problem you experienced, such as any work-arounds you may have found. 보고서에 같은 정보를 반복해서 포함하지 마세요.Avoid repeating information found elsewhere in your report.

재현The repro

재현은 발생한 문제를 재현하여 보여주는 완전한 자체 포함된 소스 코드 예제입니다(따라서 이름).A repro is a complete, self-contained source code example that reproducibly demonstrates the problem you've encountered (hence the name). 저희가 사용하는 컴퓨터에서 오류를 재현하려면 재현이 필요합니다.We need a repro so that we can reproduce the error on our machines. 코드는 그 자체만으로도 컴파일 및 실행되는 또는 발생한 문제에 사용하지 않는 경우 컴파일 및 실행되는 간단한 실행 파일을 만들기에 충분해야 합니다.The code should be sufficient by itself to create a simple executable that compiles and runs, or that would compile and run if not for the problem you've found. 재현은 코드 조각이 아닙니다. 완전한 함수 및 클래스가 있어야 하며 표준 헤더에 대해서도 필요한 모든 #include 지시문을 포함하고 있어야 합니다.A repro is not a code snippet; it should have complete functions and classes and contain all the necessary #include directives, even for the standard headers.

좋은 재현의 조건What makes a good repro

좋은 재현의 조건은 다음과 같습니다.A good repro is:

  • 최소.Minimal. 재현은 발생한 문제를 정확하게 보여 주면서도 최대한 작아야 합니다.Repros should be as small as possible yet still demonstrate exactly the problem you encountered. 재현은 복잡하거나 현실적일 필요가 없습니다. 표준 또는 문서화된 컴파일러 구현을 따르는 코드 또는 진단이 누락된 경우 따르지 않은 코드를 보여주기만 하면 됩니다.Repros do not need to be complex or realistic; they only need to show code that conforms to the Standard or the documented compiler implementation, or in the case of a missing diagnostic, the code that is not conformant. 간단하게 말해서, 문제를 보여주는 데 필요한 만큼만 코드를 포함하는 재현이 가장 좋습니다.Simple, to-the-point repros that contain just enough code to demonstrate the problem are best. 코드를 제거 또는 간소화하면서도 준수 상태를 유지하고 문제를 변경되지 않은 상태로 유지할 수 있는 경우 그렇게 해주세요.If you can eliminate or simplify the code and remain conformant and also leave the issue unchanged, please do so. 작동하는 카운터 코드 예제는 필요 없습니다.You do not need to include counter-examples of code that works.

  • 자체 포함.Self-Contained. 재현에서 불필요한 종속성을 피해야 합니다.Repros should avoid unnecessary dependencies. 가능한 한, 타사 라이브러리 없이 문제를 재현할 수 있도록 합니다.If you can reproduce the problem without third-party libraries, please do so. 간단한 출력 문 이외의 라이브러리 코드 없이 문제를 재현할 수 있는 경우(예: puts("this shouldn't compile");, std::cout << value;, 및 printf("%d\n", value);는 상관 없음) 그렇게 해주세요.If you can reproduce the problem without any library code besides simple output statements (for example, puts("this shouldn't compile");, std::cout << value;, and printf("%d\n", value); are okay), please do so. 사용자 헤더에 대한 참조 없이 예제를 단일 소스 코드 파일로 요약할 수 있다면 가장 좋습니다.It's ideal if the example can be condensed to a single source code file, without reference to any user headers. 가능한 문제 원인으로 고려해야 하는 코드 양을 줄이면 도움이 됩니다.Reducing the amount of code we have to consider as a possible contributor to the problem is enormously helpful to us.

  • 최신 컴파일러 버전 사용.Against the latest compiler version. 재현에는 최신 버전 도구 집합의 최신 업데이트 또는 가능하다면 다음 업데이트 또는 다음 주요 릴리스의 최신 시험판 버전을 사용해야 합니다.Repros should use the most recent update to the latest version of the toolset, or the most recent prerelease version of the next update or next major release, whenever possible. 이전 버전의 도구 집합에서 발생하는 문제가 최신 버전에서 수정된 경우가 많습니다.Problems you may encounter in older versions of the toolset have very often been fixed in newer versions. 픽스는 예외적인 경우에만 이전 버전으로 백포팅됩니다.Fixes are backported to older versions only in exceptional circumstances.

  • 관련된 경우 다른 컴파일러에서 확인하세요.Checked against other compilers if relevant. 포팅 가능한 C++ 코드를 포함하는 재현은 가능한 경우 다른 컴파일러에서 동작을 확인해야 합니다.Repros that involve portable C++ code should verify behavior against other compilers if possible. Standard는 궁극적으로 프로그램 정확성을 결정하며 어떤 컴파일러도 완벽하지는 않습니다. 그러나 Clang 및 GCC는 진단 없이 코드를 수락하고 MSVC는 수락하지 않으면 컴파일러에 버그가 있을 가능성이 높습니다.The Standard ultimately determines program correctness, and no compiler is perfect, but when Clang and GCC accept your code without a diagnostic and MSVC does not, it's likely you're looking at a bug in our compiler. (그 외의 가능성으로 Unix와 Windows의 동작이 서로 다르거나 C++ 표준 구현의 수준이 다를 수 있습니다.) 반면, 모든 컴파일러에서 코드를 거부하는 경우 코드가 잘못되었을 가능성이 높습니다.(Other possibilities include differences in Unix and Windows behavior, or different levels of C++ standards implementation, and so on.) On the other hand, if all the compilers reject your code, then it's likely that your code is incorrect. 여러 오류 메시지를 보면 직접 문제를 진단하는 데 도움이 될 수 있습니다.Seeing different error messages may help you diagnose the issue yourself.

    ISO C++ 웹 사이트의 온라인 C++ 컴파일러에서 또는 GitHub의 엄선된 온라인 C++ 컴파일러 목록에서 코드를 테스트할 온라인 컴파일러 목록을 찾을 수 있습니다.You can find lists of online compilers to test your code against in Online C++ compilers on the ISO C++ website, or this curated List of Online C++ Compilers on GitHub. 몇 가지 구체적인 예제로 Wandbox, 컴파일러 탐색기Coliru가 포함됩니다.Some specific examples include Wandbox, Compiler Explorer, and Coliru.

    참고

    온라인 컴파일러 웹 사이트는 Microsoft와 관련이 없습니다.The online compiler websites are not affiliated with Microsoft. 많은 온라인 컴파일러 웹 사이트가 개인 프로젝트로 실행되며 이러한 사이트 중에는 현재 사용할 수 없는 곳도 있을 것입니다. 하지만 검색을 통해 사용 가능한 다른 사이트를 찾을 수 있습니다.Many online compiler websites are run as personal projects, and some of these sites may not be available when you read this, but a search should find others you can use.

컴파일러, 링커 및 라이브러리의 문제는 특정 방식으로 드러나는 경향이 있습니다.Problems in the compiler, linker, and in the libraries, tend to show themselves in particular ways. 발생한 문제 종류에 따라 보고서에 포함해야 하는 재현 종류가 결정됩니다.The kind of problem you encounter will determine what kind of repro you should include in your report. 적절한 재현이 없으면 아무것도 조사할 수 없습니다.Without an appropriate repro, we have nothing to investigate. 다음은 여러분이 목격할 수 있는 몇 가지 종류의 문제와 각 문제 유형을 보고할 때 사용할 재현을 생성하는 방법에 대한 지침입니다.Here are a few of the kinds of issues that you may see, and instructions for generating the kinds of repros you should use to report each kind of problems.

프런트 엔드(파서) 충돌Frontend (parser) crash

프런트 엔드 충돌은 컴파일러의 구문 분석 단계 중에 발생합니다.Frontend crashes occur during the parsing phase of the compiler. 일반적으로 컴파일러는 심각한 오류 C1001을 내보내고 오류가 발생한 소스 코드 파일 및 줄 번호를 참조합니다. msc1.cpp 파일을 언급하는 경우도 많지만 이 세부 정보는 무시해도 됩니다.Typically, the compiler will emit Fatal Error C1001 and reference the source code file and line number on which the error occurred; it will often mention a file msc1.cpp, but you can ignore this detail.

이러한 종류의 충돌을 보고하려면 전처리 재현을 제공하세요.For this kind of crash, please provide a Preprocessed Repro.

이러한 종류의 충돌에 대한 컴파일러 출력 예는 다음과 같습니다.Here's example compiler output for this kind of crash:

SandBoxHost.cpp
d:\o\dev\search\foundation\common\tools\sandbox\managed\managed.h(929):
        fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'msc1.cpp', line 1369)
To work around this problem, try simplifying or changing the program near the
        locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
d:\o\dev\search\foundation\common\tools\sandbox\managed\managed.h(929):
        note: This diagnostic occurred in the compiler generated function
        'void Microsoft::Ceres::Common::Tools::Sandbox::SandBoxedProcess::Dispose(bool)'
Internal Compiler Error in d:\o\dev\otools\bin\x64\cl.exe.  You will be prompted
        to send an error report to Microsoft later.
INTERNAL COMPILER ERROR in 'd:\o\dev\otools\bin\x64\cl.exe'
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information

백 엔드(코드 생성) 충돌Backend (code generation) crash

백 엔드 충돌은 컴파일러의 코드 생성 단계 중에 발생합니다.Backend crashes occur during the code generation phase of the compiler. 일반적으로 컴파일러는 심각한 오류 C1001을 내보내며, 문제와 관련된 소스 코드 파일 및 줄 번호를 참조하지 않을 수도 있습니다. compiler\utc\src\p2\main.c 파일을 언급하는 경우도 많지만 이 세부 정보는 무시해도 됩니다.Typically, the compiler will emit Fatal Error C1001, and might not reference the source code file and line number associated with the problem; it will often mention the file compiler\utc\src\p2\main.c, but you can ignore this detail.

이러한 종류의 충돌을 보고하려면 LTCG(링크 타임 코드 생성)를 사용하는 경우(cl.exe에 대한 /GL 명령줄 인수를 사용하여 설정) 링크 재현을 제공해 주세요.For this kind of crash, please provide a Link repro if you are using Link-Time Code Generation (LTCG), enabled by the /GL command-line argument to cl.exe. 사용하지 않는 경우 그 대신 전처리 재현을 제공해 주세요.If not, please provide a Preprocessed repro instead.

다음은 LTCG가 사용되지 않는 백 엔드 충돌에 대한 컴파일러 출력 예제입니다.Here's example compiler output for a backend crash in which LTCG is not used. 컴파일러 출력이 이렇게 표시되는 경우 전처리 재현을 제공해야 합니다.If your compiler output looks like this you should provide a Preprocessed Repro.

repro.cpp
\\officefile\public\tadg\vc14\comperror\repro.cpp(13) : fatal error C1001:
        An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 230)
To work around this problem, try simplifying or changing the program near the
        locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
INTERNAL COMPILER ERROR in
        'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.exe'
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information

INTERNAL COMPILER ERROR로 시작하는 줄에서 cl.exe 대신 link.exe가 언급되는 경우 LTCG가 사용된 것이며 링크 재현을 제공해야 합니다.If the line that begins with INTERNAL COMPILER ERROR mentions link.exe, rather than cl.exe, LTCG was enabled and you should provide a Link Repro. 컴파일러 오류 메시지에서 LTCG 사용 여부가 확실하지 않은 경우 이전 단계에서 빌드 로그를 통해 복사한 명령줄 인수에서 /GL 명령줄 인수를 검사해야 할 수도 있습니다.If its not clear whether LTCG was enabled from the compiler error message, you may need to examine the command line arguments that you copied from your build log in a previous step for the /GL command-line argument.

링커 충돌Linker crash

링커 충돌은 컴파일러가 실행된 후 연결 단계 중에 발생합니다.Linker crashes occur during the linking phase, after the compiler has run. 일반적으로 링커는 링커 도구 오류 LNK1000을 내보냅니다.Typically, the linker will emit Linker Tools Error LNK1000.

참고

출력에서 C1001이 언급되거나 링크 타임 코드 생성이 포함된 경우 대신 백 엔드(코드 생성) 충돌에서 자세한 내용을 참조하세요.If the output mentions C1001 or involves Link-Time Code Generation, refer to Backend (code generation) crash instead for more information.

이러한 종류의 충돌을 보고하려면 링크 재현을 제공하세요.For this kind of crash, please provide a Link repro.

이러한 종류의 충돌에 대한 컴파일러 출력 예는 다음과 같습니다.Here's example compiler output for this kind of crash.

z:\foo.obj : error LNK1000: Internal error during IMAGE::Pass2

  Version 14.00.22816.0

  ExceptionCode            = C0000005
  ExceptionFlags           = 00000000
  ExceptionAddress         = 00007FF73C9ED0E6 (00007FF73C9E0000)
        "z:\tools\bin\x64\link.exe"
  NumberParameters         = 00000002
  ExceptionInformation[ 0] = 0000000000000000
  ExceptionInformation[ 1] = FFFFFFFFFFFFFFFF

CONTEXT:

  Rax    = 0000000000000400  R8     = 0000000000000000
  Rbx    = 000000655DF82580  R9     = 00007FF840D2E490
  Rcx    = 005C006B006F006F  R10    = 000000655F97E690
  Rdx    = 000000655F97E270  R11    = 0000000000000400
  Rsp    = 000000655F97E248  R12    = 0000000000000000
  Rbp    = 000000655F97EFB0  E13    = 0000000000000000
  Rsi    = 000000655DF82580  R14    = 000000655F97F390
  Rdi    = 0000000000000000  R15    = 0000000000000000
  Rip    = 00007FF73C9ED0E6  EFlags = 0000000000010206
  SegCs  = 0000000000000033  SegDs  = 000000000000002B
  SegSs  = 000000000000002B  SegEs  = 000000000000002B
  SegFs  = 0000000000000053  SegGs  = 000000000000002B
  Dr0    = 0000000000000000  Dr3    = 0000000000000000
  Dr1    = 0000000000000000  Dr6    = 0000000000000000
  Dr2    = 0000000000000000  Dr7    = 0000000000000000

증분 연결이 사용되고 초기 연결이 성공한 후에만(즉, 후속 증분 연결의 기준이 되는 첫 번째 전체 연결 후에만) 충돌이 발생한 경우 초기 연결이 완료된 후 수정한 소스 파일에 해당하는 개체(.obj) 및 라이브러리(.lib) 파일의 복사본도 제공해 주세요.If incremental linking is enabled and the crash occurred only after a successful initial link, (that is, only after the first full linking on which subsequent incremental linking is based) please also provide a copy of the object (.obj) and library (.lib) files that correspond to source files that were modified after the initial link was completed.

잘못된 코드 생성Bad code generation

잘못된 코드 생성은 드물지만 컴파일러에서 실수로 잘못된 코드가 생성되고 응용 프로그램이 컴파일 시간에 이 문제를 검색하지 못하고 런타임에 충돌하는 경우에 발생합니다.Bad code generation is rare, but occurs when the compiler mistakenly generates incorrect code that will cause your application to crash at runtime rather than detecting this problem at compile-time. 발생하는 문제로 인해 잘못된 코드가 생성된다고 의심하는 경우 보고서를 백 엔드(코드 생성) 충돌과 동일하게 처리하세요.If you believe the problem you are experiencing results in bad code generation, treat your report the same as a Backend (code generation) crash.

이러한 종류의 충돌을 보고하려면 LTCG(링크 타임 코드 생성)를 사용하는 경우(cl.exe에 대한 /GL 명령줄 인수를 사용하여 설정) 링크 재현을 제공해 주세요.For this kind of crash please provide a Link repro if you are using Link-Time Code Generation (LTCG), enabled by the /GL command-line argument to cl.exe. 사용하지 않는 경우 전처리 재현을 제공해 주세요.Please provide a Preprocessed repro if not.

재현 생성 방법How to generate a repro

문제의 원인을 추적하려면 좋은 재현이 중요합니다.To help us track down the source of the problem, a good repro is vital. 특정 종류의 재현에 대해 아래에 설명된 단계를 수행하기 전에 문제를 보여주는 코드를 최대한 압축합니다.Before you do any of the steps outlined below for specific kinds of repros, try to condense the code that demonstrates the problem as much as possible. 종속성, 필요한 헤더 및 라이브러리를 제거 또는 최소화하고, 가능하다면 사용되는 컴파일러 옵션 및 전처리기 정의를 제한합니다.Try to eliminate or minimize dependencies, required headers, and libraries, and limit the compiler options and preprocessor definitions used if possible.

다음은 각기 다른 종류의 문제를 보고하는 데 사용할 다양한 종류의 재현을 생성하기 위한 지침입니다.Below are instructions for generating the various kinds of repros you'll use to report different kinds of problems.

전처리 재현Preprocessed repros

전처리 재현은 문제를 보여 주고 원래 재현 소스 파일에서 /P 컴파일러 옵션을 사용하여 C 전처리기의 출력에서 생성되는 단일 소스 파일입니다.A preprocessed repro is a single source file that demonstrates a problem, generated from the output of the C preprocessor by using the /P compiler option on the original repro source file. 포함된 헤더를 인라인으로 처리하여 추가 소스 및 헤더 파일에 대한 종속성을 제거하며 매크로, #ifdef 및 로컬 환경에 종속될 수 있는 다른 전처리기 명령도 확인합니다.This inlines included headers to remove dependencies on additional source and header files, and also resolves macros, #ifdefs, and other preprocessor commands that could depend your local environment.

참고

진행 중인 최신 구현을 대체하여 이미 문제가 해결되었는지 확인하는 경우가 많기 때문에, 전처리 재현은 표준 라이브러리 구현에 있는 버그의 결과로 나타날 수 있는 문제를 해결하기에는 유용하지 않습니다.Preprocessed repros are not as useful for problems that might be the result of bugs in our standard library implementation, because we will often want to substitute our latest, in-progress implementation to see whether we've already fixed the problem. 이 경우 재현을 전처리하지 말고, 문제를 단일 소스 파일로 줄일 수 없는 경우 코드를 .zip 파일 등으로 패키징하거나 IDE 프로젝트 재현을 사용하는 것이 좋습니다.In this case, don't preprocess the repro, and if you can't reduce the problem to a single source file, package your code into a .zip file or similar, or consider using an IDE project repro. 자세한 내용은 기타 재현을 참조하세요.For more information, see Other repros.

소스 코드 파일을 전처리하려면To preprocess a source code file

  1. 명령줄의 내용을 보고하려면에 설명된 대로 재현을 빌드하는 데 사용된 명령줄 인수를 캡처합니다.Capture the command line arguments used to build your repro, as described in To report the contents of the command line.

  2. 프로젝트를 빌드하는 데 사용된 Visual Studio 버전 및 구성 아키텍처와 일치하는 개발자 명령 프롬프트를 엽니다.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. 재현 프로젝트가 포함된 디렉터리로 변경합니다.Change to the directory that contains your repro project.

  4. 개발자 명령 프롬프트 콘솔 창에서 cl /P arguments filename.cpp 명령을 입력합니다. 여기서 arguments는 위에서 캡처된 인수 목록이고 filename.cpp는 재현 소스 파일의 이름입니다.In the developer command prompt console window, enter the command cl /P arguments filename.cpp, where arguments is the list of arguments captured above, and filename.cpp is the name of your repro source file. 이 명령은 재현에 사용된 명령줄을 복제하지만, 전처리기 패스 후 컴파일을 중지하고 전처리된 소스 코드를 filename.i로 출력합니다.This command replicates the command line used for the repro, but stops the compilation after the preprocessor pass, and outputs the preprocessed source code to filename.i.

C++/CX 소스 코드 파일을 전처리하거나 C++ 모듈 기능을 사용하는 경우 몇 가지 추가 단계가 필요합니다.If you are preprocessing a C++/CX source code file, or you are using the C++ Modules feature, some additional steps are required. 자세한 내용은 아래 섹션을 참조하세요.For more information, see the sections below.

전처리된 파일을 생성한 후에는 전처리된 파일을 사용하여 여전히 문제가 재현되는지 확인하는 것이 좋습니다.After you have generated the preprocessed file, its a good idea to make sure that the problem still repros using the preprocessed file.

전처리된 파일에서도 오류가 재현되는지 확인하려면To confirm that the error still repros with the preprocessed file

  1. 개발자 명령 프롬프트 콘솔 창에서 cl arguments /TP filename.i 명령을 입력하여 cl.exe에 전처리된 파일을 C++ 소스 파일로 컴파일하라고 알립니다. 여기서 arguments는 위에서 캡처된 인수 목록이고(하지만 /D/I 인수는 이미 전처리된 파일에 포함되었으므로 제거), filename.i는 전처리된 파일의 이름입니다.In the developer command prompt console window, enter the command cl arguments /TP filename.i to tell cl.exe to compile the preprocessed file as a C++ source file, where arguments is the list of arguments captured above, but with any /D and /I arguments removed (because they have already been included in the preprocessed file); and where filename.i is the name of your preprocessed file.

  2. 문제가 재현되는지 확인합니다.Confirm that the problem is reproduced.

마지막으로 전처리된 재현 filename.i를 보고서에 첨부합니다.Finally, attach the preprocessed repro filename.i to your report.

전처리된 C++/CX WinRT/UWP 코드 재현Preprocessed C++/CX WinRT/UWP code repros

실행 파일을 빌드하기 위해 C++/CX를 사용하는 경우 전처리된 재현을 만들고 유효성을 검사하는 데 필요한 몇 가지 추가 단계가 있습니다.If you're using C++/CX to build your executable, there are some extra steps required to create and validate a preprocessed repro.

C++/CX 소스 코드를 전처리하려면To preprocess C++/CX source code

  1. 소스 코드 파일을 전처리하려면에서 설명된 대로 전처리된 소스 파일을 만듭니다.Create a preprocessed source file as described in To preprocess a source code file.

  2. 생성된 filename.i 파일에서 #using 지시문을 검색합니다.Search the generated filename.i file for #using directives.

  3. 참조된 모든 파일의 목록을 만듭니다.Make a list of all of the referenced files. Windows*.winmd 파일, platform.winmd 파일 및 mscorlib.dll은 그대로 둡니다.Leave out any Windows*.winmd files, platform.winmd files, and mscorlib.dll.

전처리된 파일이 여전히 문제를 일으키는지 검증할 준비를 하려면,To prepare to validate that the preprocessed file still reproduces the problem,

  1. 전처리된 파일에 대한 새 디렉터리를 만들어 새 디렉터리에 복사합니다.Create a new directory for the preprocessed file and copy it to the new directory.

  2. #using 목록의 .winmd 파일을 새 디렉터리로 복사합니다.Copy the .winmd files from your #using list to the new directory.

  3. 새 디렉터리에서 빈 vccorlib.h 파일을 만듭니다.Create an empty vccorlib.h file in the new directory.

  4. 전처리된 파일을 편집하여 mscorlib.dll에 대한 #using 지시문을 제거합니다.Edit the preprocessed file to remove any #using directives for mscorlib.dll.

  5. 전처리된 파일을 편집하여 절대 경로를 복사된 .winmd 파일의 기본 파일 이름으로 변경합니다.Edit the preprocessed file to change any absolute paths to just the bare filenames for the copied .winmd files.

위와 같이 전처리된 파일이 여전히 문제를 일으키는지 확인합니다.Confirm that the preprocessed file still reproduces the problem, as above.

전처리된 C++ 모듈 재현Preprocessed C++ Modules repros

C++ 컴파일러의 모듈 기능을 사용하는 경우 전처리된 재현을 만들고 유효성을 검사하는 데 필요한 몇 가지 단계가 있습니다.If you're using the Modules feature of the C++ compiler, there are some different steps required to create and validate a preprocessed repro.

모듈을 사용하는 소스 코드 파일을 전처리하려면To preprocess a source code file that uses a module

  1. 명령줄의 내용을 보고하려면에 설명된 대로 재현을 빌드하는 데 사용된 명령줄 인수를 캡처합니다.Capture the command line arguments used to build your repro, as described in To report the contents of the command line.

  2. 프로젝트를 빌드하는 데 사용된 Visual Studio 버전 및 구성 아키텍처와 일치하는 개발자 명령 프롬프트를 엽니다.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. 재현 프로젝트가 포함된 디렉터리로 변경합니다.Change to the directory that contains your repro project.

  4. 개발자 명령 프롬프트 콘솔 창에서 cl /P arguments filename.cpp 명령을 입력합니다. 여기서 arguments는 위에서 캡처된 인수 목록이고 filename.cpp는 모듈을 사용하는 소스 파일의 이름입니다.In the developer command prompt console window, enter the command cl /P arguments filename.cpp, where arguments is the list of arguments captured above, and filename.cpp is the name of the source file that consumes the module.

  5. 모듈 인터페이스(.ifc 출력)를 빌드한 재현 프로젝트를 포함하는 디렉터리로 변경합니다.Change to the directory that contains the repro project that built the module interface (the .ifc output).

  6. 모듈 인터페이스를 빌드하는 데 사용된 명령줄 인수를 캡처합니다.Capture the command line arguments used to build your module interface.

  7. 개발자 명령 프롬프트 콘솔 창에서 cl /P arguments modulename.ixx 명령을 입력합니다. 여기서 arguments는 위에서 캡처된 인수 목록이고 modulename.ixx는 모듈 인터페이스를 만드는 소스 파일의 이름입니다.In the developer command prompt console window, enter the command cl /P arguments modulename.ixx, where arguments is the list of arguments captured above, and modulename.ixx is the name of the file that creates the module interface.

전처리된 파일을 생성한 후에는 전처리된 파일을 사용하여 여전히 문제가 재현되는지 확인하는 것이 좋습니다.After you have generated the preprocessed files, its a good idea to make sure the problem still repros using the preprocessed file.

전처리된 파일에서도 오류가 재현되는지 확인하려면To confirm that the error still repros with the preprocessed file

  1. 개발자 콘솔 창에서 재현 프로젝트가 포함된 디렉터리로 다시 변경합니다.In the developer console window, change back to the directory that contains your repro project.

  2. 위와 같이 cl arguments /TP filename.i를 입력하여 전처리된 파일을 C++ 소스 파일처럼 컴파일합니다.Enter the command cl arguments /TP filename.i as above, to compile the preprocessed file as if it were a C++ source file.

  3. 전처리된 파일이 여전히 문제를 일으키는지 확인합니다.Confirm that the problem is still reproduced by the preprocessed file.

마지막으로 .ifc 출력과 함께 전처리된 재현 파일(filename.i 및 modulename.i)을 보고서에 첨부합니다.Finally, attach the preprocessed repro files (filename.i and modulename.i) along with the .ifc output to your report.

링크 재현link_repro 환경 변수를 통해 지정되는 디렉터리의 링커 생성 콘텐츠입니다.A link repro is the linker-generated contents of a directory specified by the link_repro environment variable. LTCG(링크 타임 코드 생성)를 포함한 백 엔드 충돌 또는 링커 충돌처럼 링크 타임에 발생하는 문제를 전체적으로 보여주는 빌드 아티팩트를 포함하고 있습니다.It contains build artifacts that collectively demonstrate a problem that occurs at link time, such as a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. 이러한 빌드 아티팩트는 문제를 재현할 수 있도록 링커 입력으로 필요합니다.These build artifacts are the ones needed as linker input so that the problem can be reproduced. 이 환경 변수를 사용하여 링커의 기본 재현 생성 기능을 사용하면 손쉽게 링크 재현을 만들 수 있습니다.A link repro can be created easily by using this environment variable to enable the built-in repro generation capability of the linker.

  1. 명령줄의 내용을 보고하려면에 설명된 대로 재현을 빌드하는 데 사용된 명령줄 인수를 캡처합니다.Capture the command line arguments used to build your repro, as described in To report the contents of the command line.

  2. 프로젝트를 빌드하는 데 사용된 Visual Studio 버전 및 구성 아키텍처와 일치하는 개발자 명령 프롬프트를 엽니다.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. 개발자 명령 프롬프트 콘솔 창에서 재현 프로젝트가 포함된 디렉터리로 변경합니다.In the developer command prompt console window, change to the directory that contains your repro project.

  4. mkdir linkrepro를 입력하여 링크 재현을 위한 디렉터리를 만듭니다.Enter mkdir linkrepro to create a directory for the link repro.

  5. set link_repro=linkrepro 명령을 입력하여 link_repro 환경 변수를 방금 만든 디렉터리로 설정합니다.Enter the command set link_repro=linkrepro to set the link_repro environment variable to the directory you just created.

  6. Visual Studio에서 재현 프로젝트를 빌드하려면 개발자 명령 프롬프트 콘솔 창에서 devenv 명령을 입력합니다.To build the repro project in Visual Studio, in the developer command prompt console window, enter the command devenv. 이렇게 하면 link_repro 환경 변수의 값이 Visual Studio에 표시됩니다.This ensures that the value of the link_repro environment variable is visible to Visual Studio. 명령줄에서 프로젝트를 빌드하려면 위에서 캡처한 명령줄 인수를 사용하여 재현 빌드를 복제합니다.To build the project at the command line, use the command line arguments captured above to duplicate the repro build.

  7. 재현 프로젝트를 빌드하고 예상한 문제가 발생하는지 확인합니다.Build your repro project, and confirm that the expected problem has occurred.

  8. Visual Studio를 사용하여 빌드를 수행한 경우 Visual Studio를 닫습니다.Close Visual Studio if you used it to perform the build.

  9. 개발자 명령 프롬프트 콘솔 창에서 set link_repro= 명령을 입력하여 link_repro 환경 변수를 지웁니다.In the developer command prompt console window, enter the command set link_repro= to clear the link_repro environment variable.

마지막으로, 전체 linkrepro 디렉터리를 .zip 파일 등으로 압축하여 재현을 패키징하고 보고서에 첨부합니다.Finally, package the repro by compressing the entire linkrepro directory into a .zip file or similar and attach it to your report.

기타 재현Other repros

문제를 단일 소스 파일이나 전처리 재현으로 줄일 수 없고 문제에 링크 재현이 필요하지 않은 경우 IDE 프로젝트를 조사할 수 있습니다.If you can't reduce the problem to a single source file or preprocessed repro, and the problem does not require a link repro, we can investigate an IDE project. 좋은 재현을 만드는 방법에 대한 모든 지침이 여전히 적용됩니다. 코드는 크기를 최소화하고 자체 포함되어야 하며, 가장 최신 도구에서 문제가 발생해야 하며, 관련이 있는 경우 다른 컴파일러에서 문제가 보이면 안 됩니다.All the guidance on how to create a good repro still applies; the code should be minimal and self-contained, the problem should occur in our most recent tools, and if relevant, the problem should not be seen in other compilers.

재현을 최소 IDE 프로젝트로 만든 다음 전체 디렉터리 구조를 .zip 파일 등으로 압축하여 패키징하고 보고서에 첨부합니다.Create your repro as a minimal IDE project, then package it by compressing the entire directory structure into a .zip file or similar and attach it to your report.

보고서를 보내는 방법Ways to send your report

몇 가지 좋은 방법으로 보고서를 보낼 수 있습니다.There are a couple of good ways to get your report to us. Visual Studio의 기본 제공 문제 도구 보고 또는 Visual Studio 개발자 커뮤니티 페이지를 사용할 수 있습니다.You can use Visual Studio's built-in Report a Problem Tool, or the Visual Studio Developer Community pages. 이 페이지의 아래쪽에 있는 제품 피드백 단추를 선택하여 개발자 커뮤니티 페이지로 직접 이동할 수도 있습니다.You can also get directly to our Developer Community pages by choosing the Product feedback button at the bottom of this page. 스크린 샷을 캡처하여 개발자 커뮤니티 페이지에 게시하기 위해 보고서를 구성하기 위해 IDE에 내장된 도구를 사용할지 여부 또는 웹 사이트를 직접 사용하려는 경우에 따라 선택이 달라집니다.The choice depends on whether you want to use the tools built into the IDE for capturing screenshots and organizing your report for posting on the Developer Community pages, or if you'd prefer to use the website directly.

참고

보고서를 제출하는 방법에 관계없이 Microsoft는 사용자의 개인 정보를 보호합니다.Regardless of how you submit your report, Microsoft respects your privacy. Microsoft는 모든 데이터 프라이버시 법률 및 규정을 준수할 것을 약속합니다.Microsoft is committed to compliance with all data privacy laws and regulations. Microsoft에서 사용자가 보낸 데이터를 처리하는 방법에 대한 자세한 내용은 Microsoft 개인정보처리방침을 참조하세요.For information about how we treat the data that you send us, see the Microsoft Privacy Statement.

문제 보고 도구 사용Use the Report a Problem tool

Visual Studio의 문제 보고 도구는 Visual Studio 사용자가 마우스만 몇 번 클릭하여 다양한 문제를 보고할 수 있는 방법입니다.The Report a Problem tool in Visual Studio is a way for Visual Studio users to report a variety of problems with just a few clicks. IDE를 벗어나지 않고 발생한 문제에 대한 자세한 정보를 지정한 다음 보고서를 제출하는 데 사용할 수 있는 간단한 양식을 제공합니다.It provides a simple form that you can use to specify detailed information about the problem you've encountered and then submit your report without ever leaving the IDE.

문제 보고 도구를 통한 문제 보고는 IDE에서 쉽고 간편하게 수행할 수 있습니다.Reporting your problem through the Report a Problem tool is easy and convenient from the IDE. 빠른 시작 검색 상자 옆에 있는 사용자 의견 보내기 아이콘을 선택하여 제목 표시줄에서 액세스하거나 메뉴 표시줄의 도움말 > 사용자 의견 보내기 > 문제 보고에서 해당 메뉴를 찾을 수 있습니다.You can access it from the title bar by choosing the Send Feedback icon next to the Quick Launch search box, or you can find it on the menu bar in Help > Send Feedback > Report a Problem.

문제를 보고하려는 경우 개발자 커뮤니티에서 유사한 문제를 검색합니다.When you choose to report a problem, first search the Developer Community for similar problems. 이전에 문제가 보고된 적이 있다면 항목에 찬성하고 추가 세부 정보가 포함된 댓글을 추가하세요.If your problem has been reported before, upvote the topic and add comments with additional specifics. 유사한 문제가 표시되지 않는다면 Visual Studio 피드백 대화 상자의 새로운 문제 보고 단추를 선택하고 단계에 따라 문제를 보고합니다.If you don't see a similar problem, choose the Report new problem button at the bottom of the Visual Studio Feedback dialog and follow the steps to report your problem.

Visual Studio 개발자 커뮤니티 페이지 사용Use the Visual Studio Developer Community pages

Visual Studio 개발자 커뮤니티 페이지는 C++ 컴파일러, 도구 및 라이브러리에 대한 문제를 보고하고 해결 방법을 찾을 수 있는 또 다른 편리한 방법입니다.The Visual Studio Developer Community pages are another convenient way to report problems and find solutions for Visual Studio, the C++ compiler, tools, and libraries. Visual Studio 질문 페이지에는 IDE 또는 설치 관련 문제를 보고합니다.The Visual Studio Questions page is where to report problems with the IDE or installation. C++ 컴파일러, 링커, 기타 도구 및 라이브러리와 관련된 문제의 경우 C++ 질문 페이지를 사용합니다.For issues with the C++ compiler, linker, and other tools and libraries, use the C++ Questions page.

개발자 커뮤니티에서 각 페이지의 맨 위 부근에 있는 배너는 자신의 문제와 유사한 문제를 보고하는 게시물이나 항목을 찾는 데 사용할 수 있는 검색 상자입니다.In the Developer Community banner near the top of each page is a search box you can use to find posts or topics that report problems similar to yours. 자신의 문제와 관련된 해결 방법이나 기타 유용한 정보가 기존 항목에 이미 있을 수 있습니다.You may find that a solution or other useful information related to your problem is already available in an existing topic. 누군가가 이전에 동일한 문제를 보고한 경우 새 문제 보고서를 만드는 대신 해당 항목에 찬성하고 댓글을 다세요.If someone has reported the same problem before, please upvote and comment on that topic rather than create a new problem report.

문제가 이전에 보고된 적이 없다면 개발자 커뮤니티 페이지의 검색 상자 옆에 있는 문제 보고 단추를 선택하세요.If your problem has not been reported before, choose the Report a problem button next to the search box on the Developer Community page. Visual Studio 계정에 로그인하고 개발자 커뮤니티 앱의 프로필 액세스에 동의할지 묻는 메시지가 표시될 수 있습니다.You may be asked to sign in to your Visual Studio account and to agree to give the Developer Community app access to your profile. 로그인하면 문제를 보고할 수 있는 페이지로 바로 이동합니다.When you are signed in, you go directly to a page where you can report the problem. 재현 코드 및 명령줄, 스크린샷, 관련 토론에 대한 링크 및 자신이 관련성 있고 유용하다고 생각하는 기타 정보를 포함할 수 있습니다.You can include your repro code and command line, screen shots, links to related discussions, and any other information you think is relevant and useful.

Visual Studio에서 발생할 수 있고 도구 집합과 관련이 없는 다른 종류의 문제(예: UI 문제, 손상된 IDE 기능 또는 일반 충돌)의 경우 스크린샷 기능 및 발생한 문제를 유발하는 UI 작업 기록 기능 때문에 문제 보고 도구가 특히 유용할 수 있습니다.For other kinds of problems you might encounter in Visual Studio that are not related to the toolset (For example, UI issues, broken IDE functionality, or general crashes), the Report a Problem tool can be an especially good choice due to its screenshot capabilities and its ability to record UI actions that lead to the problem you've encountered. 또한 이러한 종류의 오류는 개발자 커뮤니티 사이트에서도 보고할 수 있습니다.These kinds of errors can also be reported on the Developer Community site.

보고서 및 개인 정보Reports and privacy

기본적으로 보고서의 모든 정보와 모든 의견 및 댓글이 공개됩니다.By default, all information in reports and any comments and replies are publicly visible. 일반적으로 다른 사용자가 발견한 문제점, 솔루션 및 해결 방법을 전체 커뮤니티가 볼 수 있기 때문에 이는 장점이 됩니다.Normally, this is a benefit, because it allows the entire community to see the issues, solutions, and workarounds other users have found. 그러나 개인 정보 또는 지적 재산권을 이유로 데이터 또는 신원 공개가 우려되는 경우 이에 대한 옵션이 있습니다.However, if you're concerned about making your data or identity public, for privacy or intellectual property reasons, you have options.

신원 노출이 우려되는 경우 자신의 세부 정보를 공개하지 않는 새로운 Microsoft 계정을 만듭니다.If you are concerned about revealing your identity, create a new Microsoft account that does not disclose any details about you. 이 계정을 사용하여 보고서를 만듭니다.Use this account to create your report.

공개된 초기 보고서의 제목이나 내용에 비공개 내용을 넣지 마십시오.Don't put anything you want to keep private in the title or content of the initial report, which is public. 대신 별도의 주석으로 개인 세부 정보를 보냅니다.Instead, note that you will send details privately in a separate comment. 보고서가 적합한 사람들에게 전달되도록 하려면 문제 보고서의 주제 목록에 cppcompiler를 포함시킵니다.To make sure that your report is directed to the right people, include cppcompiler in the topic list of your problem report. 문제 보고서가 작성되면 이제 회신과 첨부 파일을 볼 수 있는 사용자를 지정할 수 있습니다.Once the problem report is created, it's now possible to specify who can see your replies and attachments.

개인 정보에 대한 문제 보고서를 작성하려면To create a problem report for private information

  1. 작성한 보고서에서 메모 추가를 선택하여 문제에 대한 개인 설명을 작성합니다.In the report you created, choose Add comment to create your private description of the problem.

  2. 회신 편집기에서 제출취소 단추 아래의 드롭다운 컨트롤을 사용하여 회신 대상을 지정합니다.In the reply editor, use the dropdown control below the Submit and Cancel buttons to specify the audience for your reply. 지정한 사람만이 비공개 회신과 그 안에 포함된 이미지, 링크 또는 코드를 볼 수 있습니다.Only the people you specify can see these private replies and any images, links, or code you include in them. 중재자 및 원래 게시자가 볼 수 있음을 선택하여 Microsoft 직원과 본인만 볼 수 있도록 제한합니다.Choose Viewable by moderators and the original poster to limit visibility to Microsoft employees and yourself.

  3. 재현에 필요한 설명 및 기타 정보, 이미지 및 첨부 파일을 추가합니다.Add the description and any other information, images, and file attachments needed for your repro. 제출 단추를 선택하여 이 정보를 비공개로 보냅니다.Choose the Submit button to send this information privately.

    첨부 파일은 2GB까지 최대 10개로 제한됩니다.Note that there is a 2GB limit on attached files, and a maximum of 10 files. 이보다 큰 파일을 업로드하는 경우 비공개 주석으로 업로드 URL을 요청하십시오.For any larger uploads, please request an upload URL in your private comment.

이 주석 아래의 댓글에는 귀하가 지정한 것과 동일한 공개 설정 제한이 있습니다.Any replies under this comment have the same restricted visibility you specified. 이는 회신의 드롭다운 컨트롤이 공개 제한 상태를 올바르게 표시되지 않는 경우에도 마찬가지입니다.This is true even if the dropdown control on replies does not show the restricted visibility status correctly.

개인 정보를 보호하고 중요한 정보를 공개하지 않으려면 이 제한적 주석에 따라 회신함으로써 Microsoft와의 모든 상호 작용을 유지하세요.To maintain your privacy and keep your sensitive information out of public view, please take care to keep all interaction with Microsoft to replies under this restricted comment. 기타 다른 주석에 대한 회신은 실수로 중요한 정보가 누설될 수 있습니다.Replies to other comments may cause you to accidentally disclose sensitive information.

C++ 설명서 문제를 보고하는 방법How to report a C++ documentation issue

GitHub 문제를 사용하여 설명서에 보고된 문제를 추적합니다.We use GitHub issues to track problems reported in our documentation. 이제 작성자 및 제품 팀과 훨씬 더 다양한 방식으로 상호 작용할 수 있는 콘텐츠 페이지에서 직접 GitHub 문제를 만들 수 있습니다.You can now create GitHub issues directly from a content page, which enables you interact in a much richer way with writers and product teams. 문서, 잘못된 코드 샘플, 혼란스러운 설명, 중요한 누락 또는 오타가 있는 문제가 있으면 편안하게 알려주세요.If you see an issue with a document, a bad code sample, a confusing explanation, a critical omission, or even just a typo, you can easily let us know. 페이지 아래쪽으로 스크롤하고 로그인을 선택하여 설명서 피드백을 제공합니다.Scroll to the bottom of the page and select Sign in to give documentation feedback. 아직 GitHub 계정이 없는 경우 해당 계정을 만들어야 하지만, 일단 계정이 만들어졌으면 보고된 문제에 대한 변경 내용이 있을 경우 설명서 문제와 해당 상태를 모두 확인하고 알림을 받을 수 있습니다.You'll need to create a GitHub account if you don't have one already, but once you do, you can see all of our documentation issues, their status, and get notifications when changes are made for the issue you reported. 자세한 내용은 새로운 피드백 시스템이 docs.microsoft.com에 제공됩니다를 참조하세요.For more information, see A New Feedback System Is Coming to docs.microsoft.com.

설명서 피드백 단추를 사용하여 GitHub에 설명서 문제를 만들면, 문제를 만든 페이지에 대한 일부 정보가 해당 문제에 자동으로 채워져 문제가 있는 위치를 알 수 있습니다.When you create a documentation issue on GitHub by using the documentation feedback button, the issue is automatically filled in with some information about the page you created the issue on, so we know where the problem is located. 이 정보는 편집하지 마세요.Please don't edit this information. 잘못된 항목 및 원하는 경우 제안된 해결 방법에 대한 세부 정보를 추가하기만 하면 됩니다.Just append the details about what's wrong and, if you like, a suggested fix. 설명서는 오픈 소스이므로 실제로 수정하고 직접 제안하려는 경우 그렇게 할 수 있습니다.Our documentation is open source, so if you'd like to actually make a fix and propose it yourself, you can do that. 설명서에 기여할 수 있는 방법에 대한 자세한 내용은 GitHub의 기여 가이드를 참조하세요.For more information about how you can contribute to our documentation, see our Contributing guide on GitHub.