Microsoft C++ ツールセットまたはドキュメントの問題を報告する方法How to report a problem with the Microsoft C++ toolset or documentation

Microsoft C++ コンパイラ (MSVC)、リンカー、またはその他のツールやライブラリで問題が見つかった場合は、それらをお知らせください。If you find problems in the Microsoft C++ compiler (MSVC), the linker, or other tools and libraries, we want to know about them. ドキュメントに問題がある場合は、そちらもお知らせください。When the issue is in our documentation, we want to know about that, too.

Visual 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 discovered. プログラムをビルドした方法についての詳細がすべて含まれる必要があります。It should have all the details about how you build your program. また、弊社のコンピューターで問題を再現するために使用できる完全なテスト ケースである "再現コード" も含まれる必要があります。And it should include 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 isn't local to your environment. 他のバージョンのコンパイラに影響を与えるかどうかを特定し、原因を診断するのに役立ちます。It helps us 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. 発見した問題の再現コードの生成方法、製品チームへのレポートの送信方法について説明します。We describe 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. Microsoft C++ の向上にご協力いただきありがとうございます。Thank you for helping us improve Microsoft C++!

レポートを準備する方法How to prepare your report

完全な情報がないとお客様が発見した問題を弊社で再現することが難しいため、適切なレポートを作成することが重要です。It's important to create a high-quality report, because it's difficult for us to reproduce the problem you found without complete information. レポートの質がよいほど、より効果的に問題を再現して診断できます。The better your report is, the more effectively we can 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 found.

  • 再現コードは、問題を実際に示す完全な簡素化された自己完結型のソース コード例です。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. 適切であれば、弊社のコンピューターで同じツールセットに対して再現コードをテストすることができます。That's so 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 have the same problem.

お使いのコンパイラの完全なバージョンを報告するにはTo report the full version of your compiler

  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:

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. そうであれば、弊社のコンピューターでまったく同じ方法によりビルドできます。That's so we can build it in exactly the same way on our machines. それは、特定の引数または引数の組み合わせを使ってビルドしたときにのみ問題が発生する可能性があるので重要です。It's important because the problem you've found 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 you experience the problem. そのようにすると、問題の原因となった可能性があるまったく同じ引数がコマンド ラインに確実に含まれます。It ensures that the command line contains exactly the same arguments that might contribute 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 version\Projects\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog 内のドキュメント フォルダー内、または \Source\Repos\SolutionName\ProjectName\Configuration\ProjectName.tlog\CL.command.1.tlog の下のご自分のユーザー フォルダー内にあります。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've changed the default location for your project.

    このファイルで、ソース コード ファイルの名前と、コンパイルに使われたコマンド ライン引数を探します。これらは別々の行になっています。Inside this file, you'll find the names of your source code files, followed by the command-line arguments used to compile them, each on separate lines.

  2. 問題が発生するソース コード ファイルの名前を含む行を探します。Locate the line that contains the name of the source code file where the problem occurs. その下の行には、対応する cl.exe コマンド引数が含まれています。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 found. それにより、弊社のコンピューターで同じ結果を見ていることを確認できます。That's so we can verify that we see the same effect on our machines. また、実行しようとしていたこと、および予想された結果をお知らせいただくと、役に立つ場合があります。It's also sometimes useful for us to know what you were trying to accomplish, and what you expected to happen.

ツールセットで表示される 正確なエラー メッセージ、または発生した正確な実行時の動作を提供するのが、よい説明です。A good description provides the exact error messages given by the toolset, or the exact runtime behavior you see. この情報は、問題が正しく再現されたことを Microsoft が確認するために必要です。We need this information to verify that we've properly reproduced the issue. 最後のエラー メッセージだけでなく、すべて のコンパイラ出力を含めます。Include all of the compiler output, not just the last error message. Microsoft では、報告する問題が発生するまでのすべてのことを確認する必要があります。We need to see everything that led up to the issue you report. コマンド ライン コンパイラを使用して問題を複製できる場合は、そのコンパイラの出力が推奨されます。If you can duplicate the issue by using the command-line compiler, that compiler output is preferred. IDE およびその他のビルド システムは、表示されるエラー メッセージがフィルター処理されたり、エラー メッセージの最初の行のみがキャプチャされたりする場合があります。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 doesn't generate a diagnostic, include that in your report.

実行時の動作の問題を報告するには、プログラムで出力されたものの 正確なコピー と、表示されるべきものを含めます。To report a runtime behavior problem, include an exact copy of what the program prints, and what you expect to see. たとえば printf("This should be 5: %d\n", actual_result); のように、これが出力ステートメントそのものに含まれているのが理想的です。Ideally, you'll embed it 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 found, such as any work-arounds you've discovered. レポートの別の場所にある情報を繰り返し記載しないようにしてください。Try not to repeat information found elsewhere in your report.

再現コードThe repro

"再現コード" は、完全な自己完結型のソース コードの例です。A repro is a complete, self-contained source code example. 再現可能な方法で発生している問題を示します (これが名前の由来です)。It reproducibly demonstrates the problem you've found, hence the name. 再現コードは、Microsoft のコンピューターでエラーを再現できるようにするために必要です。We need a repro so that we can reproduce the error on our machines. コードは、それだけでコンパイルして実行する基本的な実行可能ファイルを作成するのに十分である必要があります。The code should be sufficient by itself to create a basic executable that compiles and runs. または、見つかった問題がなければ、コンパイルして実行 "できたはずのもの" です。Or, that would compile and run, if not for the problem you've found. 再現コードはコード スニペットではありません。A repro isn't a code snippet. 完全な関数とクラスがあり、標準のヘッダーに対しても、必要なすべての #include ディレクティブが含まれている必要があります。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 found. 再現コードは複雑または現実的なものである必要はありません。Repros don't need to be complex or realistic. 必要なのは、標準または文書化されているコンパイラの実装に準拠しているコードを示すことだけです。They only need to show code that conforms to the Standard, or to the documented compiler implementation. 診断が存在しない場合は、再現コードで適合しないコードを示す必要があります。For a missing diagnostic, your repro should show the code that's not conformant. 問題を再現するのに十分なコードを含むシンプルで的を射た再現コードが最適です。Simple, to-the-point repros that contain only 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, then do so. 動作するコードの反例を含める必要はありません。You don't 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, then 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);), then do so. これは、ユーザー ヘッダーへの参照なしで例を 1 つのソース コード ファイルに凝縮できる場合に最適です。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 whenever possible. または、次回の更新プログラムまたは次のメジャー リリースの最新のプレリリース版を使用します。Or, use the most recent prerelease version of the next update or next major release. 古いバージョンのツールセットで発生する問題の多くは、新しいバージョンで修正されています。Problems you may find in older versions of the toolset have 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. C++ 標準では、プログラムの正確性が最終的に判断され、完全なコンパイラはありません。The C++ standard ultimately determines program correctness, and no compiler is perfect. ただし、Clang と GCC が診断なしでコードを受け入れ、MSVC が受け入れない場合は、お使いのコンパイラのバグが見つかった可能性があります。However, when Clang and GCC accept your code without a diagnostic, and MSVC doesn't, you've probably found 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.) When 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++ Web サイトのオンライン 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. 具体的な例には、WandboxCompiler Explorer などがあります。Some specific examples include Wandbox and Compiler Explorer.

    注意

    オンライン コンパイラの Web サイトは Microsoft とは関係ありません。The online compiler websites are not affiliated with Microsoft. オンライン コンパイラの Web サイトの多くは、個人のプロジェクトとして運営されています。Many online compiler websites are run as personal projects. これを読んでいる時点で閲覧できなくなっているサイトもあるかもしれませんが、検索すれば、その他の使用できるサイトが見つかるはずです。Some of these sites may be unavailable 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 find 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. 問題の種類ごとにレポートに使用する必要のある再現コードの種類の生成方法の手順も示します。We include instructions on how to generate the kind of repro you should use to report each kind of problem.

フロントエンド (パーサー) のクラッシュFrontend (parser) crash

フロントエンドのクラッシュは、コンパイラの解析フェーズの間に発生します。Frontend crashes occur during the parsing phase of the compiler. 通常、コンパイラでは、致命的なエラー C1001 が出力され、エラーが発生したソース コード ファイルと行番号が参照されます。Typically, the compiler emits Fatal Error C1001, and references the source code file and line number on which the error occurred. msc1.cpp という名前のファイルが言及されていることがよくありますが、この詳細は無視してかまいません。It often mentions a file named msc1.cpp, but you can ignore this detail.

この種のクラッシュの場合は、前処理済み再現コードを提供します。For this kind of crash, 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 が出力され、問題に関連するソース コード ファイルと行番号が参照されていない場合があります。Typically, the compiler emits Fatal Error C1001, and it might not reference the source code file and line number associated with the problem. ファイル compiler\utc\src\p2\main.c が言及されていることがよくありますが、この詳細は無視してかまいません。It often mentions the file compiler\utc\src\p2\main.c, but you can ignore this detail.

この種のクラッシュの場合は、 /GL コマンド ライン引数を cl.exe に指定することによって有効したリンク時のコード生成 (LTCG) を使っている場合は、リンク再現コードを提供します。For this kind of crash, provide a Link repro if you're using Link-Time Code Generation (LTCG), enabled by the /GL command-line argument to cl.exe. 使っていない場合は、代わりに前処理済み再現コードを提供します。If not, provide a Preprocessed repro instead.

LTCG を使っていないバックエンド クラッシュに対するコンパイラ出力の例を次に示します。Here's example compiler output for a backend crash in which LTCG isn't used. 次のようなコンパイラ出力の場合は、前処理済み再現コードを提供する必要があります。If your compiler output looks like the following, 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

内部コンパイラ エラー で始まる行において、cl.exe ではなく link.exe が言及されている場合は、LTCG が有効になっていました。If the line that begins with INTERNAL COMPILER ERROR mentions link.exe, rather than cl.exe, LTCG was enabled. この場合は、リンク再現コードを提供します。Provide a Link repro in this case. コンパイラのエラー メッセージから LTCG が有効になっていたどうかはっきりわからない場合は、コマンド ライン引数を調べます。When it's not clear whether LTCG was enabled from the compiler error message, examine the command-line arguments. それらは、前の手順で /GL コマンド ライン引数に対するビルド ログからコピーしました。You copied them 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 this kind of crash, provide a Link repro.

この種のクラッシュに対するコンパイラ出力の例を次に示します。Here's an example of 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 link on which a later incremental link is based, also provide a copy of the object (.obj) and library (.lib) files that correspond to source files modified after the initial link was completed.

不正なコードの生成Bad code generation

不正なコードが生成されることはまれです。Bad code generation is rare. コンパイラが誤って不適切なコードを生成し、アプリケーションが実行時にクラッシュすると発生します。It occurs when the compiler mistakenly generates incorrect code that causes your application to crash at runtime. 代わりに、正しいコードを生成するか、またはコンパイル時に問題を検出する必要があります。Instead, it should generate correct code, or detect a problem at compile time. 発生している問題が不正なコードの生成の結果であると考えられる場合は、バックエンド (コード生成) のクラッシュと同じようにレポートを処理してください。If you believe the problem you've found results in bad code generation, treat your report the same as a Backend (code generation) crash.

この種のクラッシュでは、cl.exe に対して /GL コマンド ライン引数を使っている場合は、リンク再現コードを提供します。For this kind of crash, provide a Link repro if you're using the /GL command-line argument to cl.exe. 使っていない場合は、前処理済み再現コードを提供します。Provide a Preprocessed repro if not.

再現コードの生成方法How to generate a repro

Microsoft での問題の原因究明には、適切な再現コードが非常に重要です。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. 可能な場合は、使用するコンパイラ オプションとプリプロセッサ定義を制限します。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

前処理済みの再現コード は、問題を示す単一のソース ファイルです。A Preprocessed repro is a single source file that demonstrates a problem. C プリプロセッサの出力から生成されます。It's generated from the output of the C preprocessor. 作成するには、元の再現コードのソース ファイルで /P コンパイラ オプションを使用します。To create one, use the /P compiler option on the original repro source file. このオプションでは、インクルードされているヘッダーがインライン化されて、他のソース ファイルとヘッダー ファイルへの依存関係が削除されます。This option inlines the included headers to remove dependencies on additional source and header files. ローカル環境に依存する可能性のあるマクロ、#ifdef 条件、他のプリプロセッサ コマンドも解決されます。The option also resolves macros, #ifdef conditionals, and other preprocessor commands that could depend on 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. この場合は、再現コードを前処理しないでください。また、問題を 1 つのソース ファイルに減らすことができない場合は、コードを .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」と入力します。In the developer command prompt console window, enter the command cl /P arguments filename.cpp. arguments には、上でキャプチャした引数のリストを使用します。For arguments, use the list of arguments you captured above. filename.cpp は再現コードのソース ファイルの名前です。filename.cpp is the name of your repro source file. このコマンドは、再現コードに使用したコマンド ラインをレプリケートしますが、プリプロセッサ パスの後、コンパイルを停止します。This command replicates the command line you used for the repro, but stops the compilation after the preprocessor pass. その後、前処理済みのソース コードを filename.i に出力します。Then it writes the preprocessed source code to filename.i.

C++/CX ソース コード ファイルを前処理している場合、または C++ モジュール機能を使用している場合は、いくつか追加の手順が必要です。If you're preprocessing a C++/CX source code file, or you're using the C++ Modules feature, some additional steps are required. 詳細については、以下のセクションを参照してください。For more information, see the sections below.

前処理済みのファイルを生成した後、その前処理済みファイルをコンパイルして問題が引き続き再現されることを確認してください。After you've generated the preprocessed file, it's a good idea to make sure that the problem still repros when you compile the preprocessed file.

前処理済みファイルでエラーが再現することを確認するにはTo confirm the preprocessed file still repros the error

  1. 開発者コマンド プロンプト コンソール ウィンドウで、コマンド「cl arguments /TP filename.i」と入力して、cl.exe に前処理済みのファイルを C++ ソース ファイルとしてコンパイルするように指示します。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. arguments は上でキャプチャしたものと同じ引数ですが、 /D 引数と /I 引数は、削除されています。The arguments are the same arguments captured above, but with any /D and /I arguments removed. それらは前処理済みのファイルに既に含まれているためです。That's because they've already been included in the preprocessed file. filename.i は、前処理済みファイルの名前です。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」と入力します。In the developer command prompt console window, enter the command cl /P arguments filename.cpp. arguments は上でキャプチャした引数、filename.cpp はモジュールを使用するソース ファイルの名前です。The arguments are the 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」と入力します。In the developer command prompt console window, enter the command cl /P arguments modulename.ixx. arguments は上でキャプチャした引数、modulename.ixx はモジュールのインターフェイスを作成するファイルの名前です。The arguments are the arguments captured above, and modulename.ixx is the name of the file that creates the module interface.

前処理済みのファイルを生成した後、その前処理済みファイルを使用して問題が引き続き再現されることを確認してください。After you've generated the preprocessed files, it's a good idea to make sure the problem still repros when you use the preprocessed file.

前処理済みファイルでエラーが再現することを確認するにはTo confirm the preprocessed file still repros the error

  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.

最後に、前処理済みの再現ファイル (filename.i と modulename.i) を .ifc 出力と共に、レポートに添付します。Finally, attach the preprocessed repro files (filename.i and modulename.i) along with the .ifc output to your report.

リンク再現コード は、link_repro 環境変数で指定されたか、または /LINKREPRO リンカー オプションの引数として指定された、リンカーによって生成されたディレクトリ内容です。A link repro is the linker-generated contents of a directory, specified either by the link_repro environment variable, or as an argument to the /LINKREPRO linker option. これには、リンク時に発生する問題を全体として再現するビルド成果物が含まれます。It contains build artifacts that collectively demonstrate a problem that occurs at link time. たとえば、リンク時コード生成 (LTCG) が関係するバックエンド クラッシュやリンカー クラッシュなどです。Examples include a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. これらのビルド成果物は、問題が再現できるように、リンカー入力として必要なものです。These build artifacts are the ones needed as linker input so the problem can be reproduced. リンク再現コードは、この環境変数を使用して、簡単に作成できます。A link repro can be created easily by using this environment variable. リンカーの組み込みの再現コード生成機能を有効にします。It enables the linker's built-in repro generation capability.

  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 を入力して、リンク再現コードに対して linkrepro というディレクトリを作成します。Enter mkdir linkrepro to create a directory named linkrepro for the link repro. 別のリンク再現コードをキャプチャするには、別の名前を使用します。You can use a different name to capture another 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 created. 複雑なプロジェクトでよくあるように、別のディレクトリからビルドを実行する場合は、代わりに link_repro をリンク再現コード ディレクトリへの完全なパスに設定します。If your build is run from a different directory, as is often the case for more complex projects, then set link_repro to the full path to your link repro directory instead.

  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 で認識できるようになります。It 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 を閉じます (ビルドを行うために使用した場合)。Close Visual Studio, if you used it to do 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.

/LINKREPRO リンカーオプションには、link_repro 環境変数と同じ効果があります。The /LINKREPRO linker option has the same effect as the link_repro environment variable. 生成されたリンク再現コードのフィルター処理に使用する名前を指定するには、/LINKREPROTARGET オプションを使用します。You can use the /LINKREPROTARGET option to specify the name to filter on for the generated link repro. /LINKREPROTARGET を使用するには、 /OUT リンカー オプションも指定する必要があります。To use /LINKREPROTARGET, you must also specify the /OUT linker option.

  1. リンク再現コードを保持するためのディレクトリを作成します。Create a directory to hold the link repro. ここでは、作成する完全なディレクトリ パスを directory-path とします。We'll refer to the full directory path you create as directory-path. パスにスペースが含まれている場合は、パスを二重引用符で囲みます。Use double quotes around the path if it includes spaces.

  2. リンカー コマンド ラインに /LINKREPRO: directory-path コマンドを追加します。Add the /LINKREPRO:directory-path command to the linker command line. Visual Studio で、プロジェクトの [プロパティ ページ] ダイアログを開きます。In Visual Studio, open the Property Pages dialog for your project. [構成プロパティ] > [リンカー] > [コマンド ライン] プロパティ ページを選択します。Select the Configuration Properties > Linker > Command Line property page. 次に、 [追加オプション] ボックスに「 /LINKREPRO: directory-path」オプションを入力します。Then, enter the /LINKREPRO:directory-path option in the Additional Options box. [OK] を選択して変更を保存します。Choose OK to save your changes.

  3. 再現コード プロジェクトをビルドし、予想された問題が発生することを確認します。Build your repro project, and confirm that the expected problem has occurred.

最後に、directory-path リンク再現コード ディレクトリ全体を .zip ファイルなどに圧縮することで再現コードをパッケージ化し、レポートに添付します。Finally, package the repro by compressing the entire directory-path link repro directory into a .zip file or similar, and attach it to your report.

その他の再現コードOther repros

1 つのソース ファイルまたは前処理済み再現コードに問題をまとめることができず、問題にリンク再現コードが必要ない場合は、IDE プロジェクトを調査できます。If you can't reduce the problem to a single source file or preprocessed repro, and the problem doesn't require a link repro, we can investigate an IDE project. 適切な再現コードの作成方法に関するすべてのガイダンスが適用されます。コードは最小限の自己完結型にする必要があります。All the guidance on how to create a good repro still applies: The code ought to be minimal and self-contained. 問題は Microsoft の最新ツールで発生する必要があり、関連する場合は、他のコンパイラでは確認されない必要があります。The problem should occur in our most recent tools, and if relevant, shouldn't 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

レポートを提出するのに最適な方法は、2 通りあります。You have a couple of good ways to get your report to us. Visual Studio に組み込まれている問題の報告ツール、または Visual Studio Developer Community (Visual Studio 開発者コミュニティ) ページを使用できます。You can use Visual Studio's built-in Report a Problem Tool, or the Visual Studio Developer Community page. また、このページの下部には [製品のフィードバック] ボタンがあります。There's also a Product feedback button at the bottom of this page. どちらを選択するかは、IDE の組み込みツールを使ってスクリーンショットをキャプチャし、レポートを整理するかどうかに依存します。The choice depends on whether you want to use the built-in tools in the IDE to capture screenshots and organize your report. そうしたくない場合は、開発者コミュニティの Web サイトを直接使用できます。If you prefer not to, you can use the Developer Community 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 のプライバシーに関する声明」をご覧ください。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 problems with just a few clicks. ポップアップ表示される簡単なフォームで、見つかった問題に関する詳細情報を送信します。It pops up a simple form to send detailed information about the problem you've found. IDE を終了することなく、レポートを送信できます。You can 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. 以前に同様の問題が報告されている場合は、そのレポートに賛成票を投じ、具体例な説明を含めたコメントを追加します。In case your problem has been reported before, upvote the report 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 で問題を報告するためのもう 1 つの便利な方法として Visual Studio 開発者コミュニティ ページがあります。このページでは Visual Studio および C++ コンパイラ、ツール、ライブラリについて解決策を検索できます。The Visual Studio Developer Community pages are another convenient way to report problems and find solutions for Visual Studio and the C++ compiler, tools, and libraries. Visual StudioVisual Studio for Mac.NETC++Azure DevOps、および Azure DevOps Server の特定の開発者コミュニティ ページがあります。There are specific Developer Community pages for Visual Studio, Visual Studio for Mac, .NET, C++, Azure DevOps, and Azure DevOps Server.

コミュニティのタブの下にある各ページの上部付近には、検索ボックスがあります。Beneath the community tabs, near the top of each page, is a search box. 自分と似た問題を報告している投稿を検索するために使用できます。You can use it to find posts that report problems similar to yours. 遭遇している問題に関連する解決策またはその他の有用な情報が既に報告されていることがあります。You may find a solution or other useful information related to your problem is already available. 他のユーザーが以前に同じ問題を報告している場合は、新たに問題レポートを作成するのではなく、そのレポートに対して賛成票を投じ、コメントを追加します。If someone has reported the same problem before, then upvote and comment on that report, rather than create a new problem report. 新しい問題についてコメント、投票、または報告するには、Visual Studio アカウントへのサインインを求められる場合があります。To comment, vote, or report a new problem, you may be asked to sign in to your Visual Studio account. 初めてサインインするときは、開発者コミュニティ アプリがプロファイルにアクセスすることに同意する必要があります。The first time you sign in, you'll have to agree to give the Developer Community app access to your profile.

C++ コンパイラ、リンカー、およびその他のツールやライブラリでの問題については、C++ Developer Community のページを最初に検索してください。For issues with the C++ compiler, linker, and other tools and libraries, first search the C++ Developer Community page. 問題を検索し、以前にその問題が報告されていない場合は、検索ボックスの横にある [問題の報告] ボタンを選択します。If you search for your problem, and it hasn't been reported before, choose the Report a problem button next to the search box. 再現コードとコマンド ライン、スクリーンショット、関連するディスカッションへのリンク、および関連性があり有用だと思われるその他の情報を含めることができます。You can include your repro code and command line, screenshots, links to related discussions, and any other information you think is relevant and useful.

ヒント

Visual Studio で発生する可能性がある、C++ ツールセットに関係しない他の種類の問題 (たとえば、UI の問題、IDE の機能の不具合、一般的なクラッシュなど) の場合は、IDE の 問題の報告 ツールを使用します。For other kinds of problems you might find in Visual Studio that are unrelated to the C++ toolset (For example, UI issues, broken IDE functionality, or general crashes), use the Report a Problem tool in the IDE. スクリーンショット機能や、発生した問題の原因である UI 操作を記録する機能があるので、このツールは最適です。This is the best choice, due to its screenshot capabilities and its ability to record UI actions that lead to the problem you've found. この種のエラーについても、Visual Studio Developer Community のサイトで検索できます。These kinds of errors can also be looked up on the Visual Studio Developer Community site. 詳細については、「Visual Studio で問題を報告する方法」を参照してください。For more information, see How to report a problem with Visual Studio.

レポートとプライバシーReports and privacy

既定では、レポート内のすべての情報、およびコメントと応答はすべて公開されますAll information in reports and any comments and replies are publicly visible by default. 通常それには、コミュニティ全体が問題、解決策、および他のユーザーが見つけた回避策を閲覧できるという利点があります。Normally, it's a benefit, because it allows the entire community to see the issues, solutions, and workarounds other users have found. しかし、プライバシーや知的財産権の理由から、データや ID が公開されることを心配されている場合は、いくつかオプションがあります。However, if you're concerned about making your data or identity public, for privacy or intellectual property reasons, you have options.

身元を公開することについて心配がある場合は、個人情報を公開しない新しい Microsoft アカウントを作成します。If you're concerned about revealing your identity, create a new Microsoft account that doesn't 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, say that you'll 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 の従業員と自分に制限するには、 [Viewable by moderators and the original poster](モデレーターと元の投稿者が閲覧可能) を選択します。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.

    添付ファイルには 2 GB の制限があり、最大で 10 個のファイルに制限されています。There's a 2GB limit on attached files, and a maximum of 10 files. これを超えるアップロードについては、プライベート コメントでアップロード URL を要求します。For any larger uploads, request an upload URL in your private comment.

このコメントの下のすべての返信には、指定したのと同じ閲覧制限が適用されます。Any replies under this comment have the same restricted visibility you specified. それは、応答のドロップダウン コントロールに閲覧制限の状態が正しく表示されていない場合でも当てはまります。It's true even if the dropdown control on replies doesn't show the restricted visibility status correctly.

お客様のプライバシーと機密情報が公開されないようにするため、注意してください。To maintain your privacy and keep your sensitive information out of public view, be careful. Microsoft とのすべてのやり取りは、制限付きのコメントの下で返信するようにしてください。Keep all interaction with Microsoft to replies under the restricted comment. 他のコメントに返信すると、機密情報が誤って公開される場合があります。Replies to other comments may cause you to accidentally disclose sensitive information.

C++ ドキュメントの問題を報告する方法How to report a C++ documentation issue

Microsoft では、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. ページの一番下までスクロールし、 [Sign in to give documentation feedback] (サインインしてドキュメントのフィードバックを送信する) を選択します。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. GitHub アカウントを作成すれば、すべてのドキュメントに関する問題やそれらの状態を参照できます。When you have a GitHub account, you can see all of our documentation issues and their status. また、お客様から報告された問題が変更された場合、通知を受け取ることができます。You also get notifications when changes are made for the issue you reported. 詳細については、「A New Feedback System Is Coming to docs.microsoft.com」(docs.microsoft.com に導入される新しいフィードバック システム) を参照してください。For more information, see A New Feedback System Is Coming to docs.microsoft.com.

ドキュメントのフィードバック ボタンを使用して、ドキュメントの問題を GitHub で作成します。You create a documentation issue on GitHub when you use the documentation feedback button. 問題を作成したページに関するいくつかの情報が、問題に自動的に記入されます。The issue is automatically filled in with some information about the page you created the issue on. それによって、問題がどこにあるかが Microsoft に把握されるので、この情報は編集しないでください。That's how we know where the problem is located, so don't edit this information. 問題の箇所の詳細のみを添付し、必要に応じて、修正方法の提案をお知らせください。Just append the details about what's wrong, and if you like, a suggested fix. 当社の C++ ドキュメントはオープンソースなので、自分で修正を送信したい場合はそれを行えます。Our C++ docs are open source, so if you'd like to submit a fix yourself, you can. 弊社のドキュメントにご協力いただく方法の詳細については、GitHub の「Contributing guide」 (寄稿ガイド) を参照してください。For more information about how you can contribute to our documentation, see our Contributing guide on GitHub.