Melden eines Problems mit dem Microsoft C++-Toolset oder der -DokumentationHow to report a problem with the Microsoft C++ toolset or documentation

Wenn Probleme mit dem Microsoft C++-Compiler (MSVC), dem Linker oder anderen Tools oder Bibliotheken auftreten, teilen Sie uns dies bitte mit.If you find problems in the Microsoft C++ compiler (MSVC), the linker, or other tools and libraries, we want to know about them. Wenn in unserer Dokumentation ein Fehler vorliegt, möchten wir das natürlich auch wissen.When the issue is in our documentation, we want to know about that, too.

Melden eines Problems mit einem C++-ToolsetHow to report a C++ toolset issue

Am einfachsten informieren Sie uns über ein Problem, indem Sie uns einen Bericht mit einer Beschreibung des Problems senden, das Sie entdeckt haben.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. Der Bericht sollte alle notwendigen Informationen dazu enthalten, wie Sie Ihr Programm erstellen.It should have all the details about how you build your program. Zudem sollte der Bericht eine Reproduktion umfassen, also einen kompletten Testfall, den wir verwenden können, um das Problem auf unseren Computern zu reproduzieren.And it should include a repro, a complete test case we can use to reproduce the problem on our own machines. Mithilfe dieser Informationen können wir schnell prüfen, ob in unserem Code ein Fehler vorliegt oder das Problem möglicherweise lokal in Ihrer Umgebung besteht.This information lets us quickly verify that the problem exists in our code and isn't local to your environment. Wir können ermitteln, ob andere Versionen des Compilers betroffen sind, und die Ursache diagnostizieren.It helps us determine whether it affects other versions of the compiler, and to diagnose its cause.

In den folgenden Abschnitten erfahren Sie, was einen guten Bericht ausmacht.In the sections below, you'll read about what makes a good report. Wir beschreiben, wie Sie eine Reproduktion für das von Ihnen erkannte Problem generieren und wie Sie Ihren Bericht an das Produktteam senden.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. Ihre Berichte sind wichtig für uns und andere Entwickler wie Sie.Your reports are important to us and to other developers like you. Vielen Dank für Ihren Beitrag zur Verbesserung von Microsoft C++!Thank you for helping us improve Microsoft C++!

Vorbereiten des BerichtsHow to prepare your report

Ein guter Bericht ist wichtig, denn für uns ist es schwierig, das von Ihnen gefundene Problem zu reproduzieren, wenn wir nicht über alle notwendigen Informationen verfügen.It's important to create a high-quality report, because it's difficult for us to reproduce the problem you found without complete information. Je besser Ihr Bericht ist, desto effektiver können wir das Problem reproduzieren und untersuchen.The better your report is, the more effectively we can recreate and diagnose the problem.

Ihr Bericht sollte mindestens die folgenden Elemente enthalten:At a minimum, your report should contain:

  • Die vollständigen Informationen zur Version des Toolsets, das Sie verwenden.The full version information of the toolset you're using.

  • Die vollständige „cl.exe“-Befehlszeile, die zum Erstellen Ihres Code verwendet wurde.The full cl.exe command line used to build your code.

  • Eine ausführliche Beschreibung des Problems, das Sie gefunden haben.A detailed description of the problem you found.

  • Bei einer Reproduktion handelt es sich um ein vollständiges, vereinfachtes und unabhängiges Quellcodebeispiel, das das Problem veranschaulicht.A repro: a complete, simplified, self-contained source code example that demonstrates the problem.

Lesen Sie weiter, um mehr über das Erstellen einer guten Reproduktion und die spezifischen Informationen zu erfahren, die wir benötigen, und wo Sie diese finden können.Read on to learn more about the specific information we need and where you can find it, and how to create a good repro.

Die Version des ToolsetsThe toolset version

Wir benötigen vollständige Informationen zur Version sowie zur Zielarchitektur des Toolsets, das das Problem verursacht.We need the full version information and the target architecture of the toolset that causes the problem. So können wir Ihre Reproduktion mit dem gleichen Toolset auf unseren Computern nachstellen.That's so we can test your repro against the same toolset on our machines. Wenn wir das Problem reproduzieren können, verfügen wir über einen Ausgangspunkt, um zu untersuchen, welche anderen Versionen des Toolsets dasselbe Problem aufweisen.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.

So geben Sie die vollständige Version Ihres Compilers anTo report the full version of your compiler

  1. Öffnen Sie die Developer-Eingabeaufforderung, die der Version von Visual Studio entspricht, und die Konfigurationsarchitektur, die zum Erstellen Ihres Projekts verwendet wurde.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project. Wenn Sie beispielsweise Anwendungen für x64-Ziele mithilfe von Visual Studio 2017 für x64 erstellen, wählen Sie x64 Native Tools-Eingabeaufforderung für Visual Studio 2017 aus.For example, if you build by using Visual Studio 2017 on x64 for x64 targets, choose x64 Native Tools Command Prompt for VS 2017. Weitere Informationen finden Sie unter Developer command prompt shortcuts (Tastenkombinationen für die Developer-Eingabeaufforderung).For more information, see Developer command prompt shortcuts.

  2. Geben Sie im Fenster „Developer-Eingabeaufforderung“ den Befehl cl /Bv ein.In the developer command prompt console window, enter the command cl /Bv.

Die Ausgabe sollte etwa so aussehen: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

Kopieren Sie die gesamte Ausgabe in den Bericht.Copy and paste the entire output into your report.

Die BefehlszeileThe command line

Wir benötigen die exakte Befehlszeile cl.exe mit sämtlichen Argumenten, die Sie zum Erstellen Ihres Codes verwendet haben.We need the exact command line, cl.exe and all of its arguments, used to build your code. So können wir den Buildprozess auf exakt die gleiche Weise auf unseren Computern ausführen.That's so we can build it in exactly the same way on our machines. Das ist wichtig, da das aufgetretene Problem eventuell nur existiert, wenn der Build mit einem bestimmten Argument oder einer Kombination von Argumenten erstellt wird.It's important because the problem you've found might only exist when building with a certain argument or combination of arguments.

Diese Informationen finden Sie am besten unmittelbar nach dem Auftreten des Problems im Buildprotokoll.The best place to find this information is in the build log immediately after you experience the problem. Dadurch wird sichergestellt, dass die Befehlszeile genau die gleichen Argumente enthält, die möglicherweise zum Problem beitragen.It ensures that the command line contains exactly the same arguments that might contribute to the problem.

So melden Sie den Inhalt der BefehlszeileTo report the contents of the command line

  1. Wechseln Sie zur Daten CL.command.1.tlog, und öffnen Sie sie.Locate the CL.command.1.tlog file and open it. Standardmäßig befindet sich diese Datei im Ordner „Dokumente“ unter \Visual StudioVersion\Projects\Projektmappenname\Projektname\Configuration\Projektname.tlog\CL.command.1.tlog oder im Ordner „Benutzer“ unter \Source\Repos\Projektmappenname\Projektname\Configuration\Projektname.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. Wenn Sie ein anderes Buildsystem verwenden oder den Standardspeicherort für Ihr Projekt geändert haben, kann der Speicherort abweichen.It may be in a different location if you use another build system, or if you've changed the default location for your project.

    In dieser Datei finden Sie die Namen Ihrer Quellcodedateien, gefolgt von den Befehlszeilenargumenten zu deren Kompilierung, jeweils in separaten Zeilen.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. Suchen Sie die Zeile, die den Namen der Quellcodedatei enthält, in der das Problem auftritt.Locate the line that contains the name of the source code file where the problem occurs. Die Zeile darunter enthält die zugehörigen cl.exe-Befehlsargumente.The line below it contains the corresponding cl.exe command arguments.

Kopieren Sie die gesamte Befehlszeile in den Bericht.Copy and paste the entire command line into your report.

Eine Beschreibung des ProblemsA description of the problem

Wir benötigen eine ausführliche Beschreibung des gefundenen Problems.We need a detailed description of the problem you've found. So können wir überprüfen, ob wir den gleichen Effekt auf unseren Computern feststellen.That's so we can verify that we see the same effect on our machines. Manchmal ist es für uns auch hilfreich zu wissen, was Sie erreichen wollten und welches Ergebnis Sie erwartet haben.It's also sometimes useful for us to know what you were trying to accomplish, and what you expected to happen.

Eine gute Beschreibung enthält die exakten Fehlermeldungen, die das Toolset ausgibt, bzw. das genaue Laufzeitverhalten, das Sie feststellen.A good description provides the exact error messages given by the toolset, or the exact runtime behavior you see. Wir benötigen diese Informationen, um zu überprüfen, ob das Problem richtig reproduziert wurde.We need this information to verify that we've properly reproduced the issue. Geben Sie nicht nur die letzte Fehlermeldung, sondern die gesamte Ausgabe des Compilers an.Include all of the compiler output, not just the last error message. Wir müssen alle Gegebenheiten überblicken können, die vor dem Ihnen ausgestellten Bericht vorhanden waren.We need to see everything that led up to the issue you report. Wenn Sie das Problem mit dem Befehlszeilencompiler duplizieren können, wird die Ausgabe dieses Compilers bevorzugt.If you can duplicate the issue by using the command-line compiler, that compiler output is preferred. Die IDE und andere Buildsysteme filtern möglicherweise die Fehlermeldungen, die Ihnen angezeigt werden, oder erfassen nur die erste Zeile einer Fehlermeldung.The IDE and other build systems may filter the error messages you see, or only capture the first line of an error message.

Wenn der Fehler darin besteht, dass der Compiler ungültigen Code akzeptiert und keine Diagnose generiert, erwähnen Sie dies in Ihrem Bericht.If the issue is that the compiler accepts invalid code and doesn't generate a diagnostic, include that in your report.

Fügen Sie zum Melden eines Problems mit dem Laufzeitverhalten eine genaue Kopie der Ausgabe des Programms und die erwartete Ausgabe hinzu.To report a runtime behavior problem, include an exact copy of what the program prints, and what you expect to see. Im Idealfall betten Sie diese in die Ausgabeanweisung selbst ein, z.B. 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);. Erwähnen Sie ebenfalls, falls das Programm abstürzt oder nicht reagiert.If your program crashes or hangs, mention that as well.

Fügen Sie weitere Details hinzu, die beim Diagnostizieren Ihres Problems hilfreich sein können, z.B. Problemumgehungen, die Sie möglicherweise entdeckt haben.Add any other details that might help us diagnose the problem you found, such as any work-arounds you've discovered. Vermeiden Sie die Wiederholung von Informationen, die an anderer Stelle in Ihrem Bericht vorhanden ist.Try not to repeat information found elsewhere in your report.

Die ReproduktionThe repro

Eine Reproduktion ist ein vollständiges, unabhängiges Quellcodebeispiel.A repro is a complete, self-contained source code example. Dieses Beispiel veranschaulicht das von Ihnen ermittelte Problem auf reproduzierbare Weise, daher der Name.It reproducibly demonstrates the problem you've found, hence the name. Wir benötigen eine Reproduktion, um den Fehler auf unseren Computern zu reproduzieren.We need a repro so that we can reproduce the error on our machines. Der Code sollte alle notwendigen Elemente enthalten, um eine grundlegende ausführbare Datei zu erstellen, die sich kompilieren und ausführen lässt.The code should be sufficient by itself to create a basic executable that compiles and runs. Bzw. die sich kompilieren und ausführen ließe, wenn das von Ihnen ermittelte Problem nicht bestünde.Or, that would compile and run, if not for the problem you've found. Eine Reproduktion ist kein Codeausschnitt.A repro isn't a code snippet. Sie sollte alle Funktionen und Klassen sowie alle erforderlichen #include-Direktiven enthalten, auch für die Standardheader.It should have complete functions and classes, and contain all the necessary #include directives, even for the standard headers.

Was zeichnet eine gute Reproduktion aus?What makes a good repro

Eine gute Reproduktion weist folgende Merkmale auf:A good repro is:

  • Minimal.Minimal. Reproduktionen sollten so klein wie möglich sein und dennoch das aufgetretene Problem exakt veranschaulichen.Repros should be as small as possible yet still demonstrate exactly the problem you found. Reproduktionen müssen weder komplex noch realistisch sein.Repros don't need to be complex or realistic. Sie müssen nur den Code zeigen, der mit der Standardimplementierung oder der dokumentierten Compilerimplementierung konform ist.They only need to show code that conforms to the Standard, or to the documented compiler implementation. Im Fall einer fehlenden Diagnose sollte Ihre Reproduktion den nicht konformen Code zeigen.For a missing diagnostic, your repro should show the code that's not conformant. Einfache und zielführende Reproduktionen, die nur so viel Code enthalten, wie zum Veranschaulichen des Problems notwendig ist, sind am besten.Simple, to-the-point repros that contain only enough code to demonstrate the problem are best. Wenn Sie Code entfernen oder den Code vereinfachen können, ohne Konformität einzubüßen oder das Problem zu verändern, ist dies erwünscht.If you can eliminate or simplify the code and remain conformant, and also leave the issue unchanged, then do so. Sie müssen keine Gegenbeispiele für funktionierenden Code einfügen.You don't need to include counter-examples of code that works.

  • Unabhängig.Self-Contained. In Reproduktionen sollten unnötige Abhängigkeiten vermieden werden.Repros should avoid unnecessary dependencies. Wenn Sie das Problem ohne Drittanbieterbibliotheken reproduzieren können, ist dies erwünscht.If you can reproduce the problem without third-party libraries, then do so. Wenn Sie das Problem abgesehen von einfachen Ausgabeanweisungen (z.B. puts("this shouldn't compile");, std::cout << value; und printf("%d\n", value);) ohne Bibliothekscode reproduzieren können, ist dies erwünscht.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. Idealerweise kann das Beispiel in eine einzige Quellcodedatei ohne Verweise auf Benutzerheader komprimiert werden.It's ideal if the example can be condensed to a single source code file, without reference to any user headers. Für uns ist es enorm hilfreich, wenn Sie die Menge des Codes verringern, den wir als mögliche Ursache des Problems untersuchen müssen.Reducing the amount of code we have to consider as a possible contributor to the problem is enormously helpful to us.

  • Neueste Compilerversion.Against the latest compiler version. Reproduktionen müssen mit dem neuesten Update der neuesten Version des Toolsets erstellt werden.Repros should use the most recent update to the latest version of the toolset whenever possible. Sie können auch die neueste Prereleaseversion des nächsten Updates oder des nächsten Hauptrelease verwenden.Or, use the most recent prerelease version of the next update or next major release. Probleme, die in älteren Versionen des Toolsets auftreten, wurden in neueren Versionen häufig behoben.Problems you may find in older versions of the toolset have often been fixed in newer versions. Fehlerbehebungen werden nur in Ausnahmefälle für ältere Versionen bereitgestellt.Fixes are backported to older versions only in exceptional circumstances.

  • Ein Vergleich mit anderen Compilern wurde durchgeführt (falls relevant).Checked against other compilers if relevant. Bei Reproduktionen, die portablen C++-Code enthalten, muss das Verhalten mit anderen Compilern, falls möglich, verglichen werden.Repros that involve portable C++ code should verify behavior against other compilers if possible. Der C++-Standard bestimmt letztendlich die Korrektheit des Programms, und kein Compiler ist perfekt.The C++ standard ultimately determines program correctness, and no compiler is perfect. Wenn jedoch Clang und GCC Ihren Code ohne Diagnose akzeptieren, MSVC aber nicht, dann haben Sie möglicherweise einen Fehler in unserem Compiler gefunden.However, when Clang and GCC accept your code without a diagnostic, and MSVC doesn't, you've probably found a bug in our compiler. (Weitere Möglichkeiten bestehen in den unterschiedlichen Verhaltensweisen von Unix und Windows, in verschiedenen Implementierungsebenen der C++-Standards usw.) Wenn Ihr Code von allen Compilern abgelehnt wird, ist es eher wahrscheinlich, dass Ihr Code Fehler enthält.(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. Die verschiedenen angezeigten Fehlermeldungen können Sie dabei unterstützen, das Problem selbst zu diagnostizieren.Seeing different error messages may help you diagnose the issue yourself.

    Eine Liste der Onlinecompiler, mit denen Sie Ihren Code testen können, finden Sie unter Online C++ compilers (C++-Onlinecompiler) auf der ISO C++-Website, oder Sie verwenden diese zusammengestellte List of Online C++ Compilers (Liste der C++-Onlinecompiler) auf GitHub.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. Zu den Beispielen zählen Wandbox, Compiler Explorer und Coliru.Some specific examples include Wandbox, Compiler Explorer, and Coliru.

    Hinweis

    Die Websites für Onlinecompiler stehen nicht in Verbindung mit Microsoft.The online compiler websites are not affiliated with Microsoft. Viele Websites für Onlinecompiler werden als persönliche Projekte betrieben.Many online compiler websites are run as personal projects. Einige Websites sind zu dem Zeitpunkt, zu dem Sie diesen Artikel lesen, möglicherweise nicht mehr verfügbar, Sie können aber nach anderen Websites suchen, die Sie verwenden können.Some of these sites may be unavailable when you read this, but a search should find others you can use.

Probleme mit dem Compiler, dem Linker und den Bibliotheken weisen üblicherweise bestimmte Merkmale auf.Problems in the compiler, linker, and in the libraries, tend to show themselves in particular ways. Die Art des aufgetretenen Problems bestimmt, welche Art von Reproduktion in den Bericht aufgenommen werden soll.The kind of problem you find will determine what kind of repro you should include in your report. Ohne geeignete Reproduktion gibt es nichts, was wir untersuchen könnten.Without an appropriate repro, we have nothing to investigate. Im Folgenden finden Sie einige der Arten von Problemen, die auftreten können.Here are a few of the kinds of issues that you may see. Sie finden auch Anleitungen dazu, wie Sie die Reproduktion generieren, die Sie für den Bericht zur jeweiligen Problemart verwenden.We include instructions on how to generate the kind of repro you should use to report each kind of problem.

Front-End-Absturz (in der Analysephase)Frontend (parser) crash

Front-End-Abstürze erfolgen in der Analysephase des Compilers.Frontend crashes occur during the parsing phase of the compiler. In der Regel gibt der Compiler den schwerwiegenden Fehler C1001 aus und verweist auf die Quellcodedatei und die Nummer der Codezeile, in der der Fehler auftritt.Typically, the compiler emits Fatal Error C1001, and references the source code file and line number on which the error occurred. Häufig wird eine Datei namens „msc1.cpp“ erwähnt, dieses Detail können Sie aber ignorieren.It often mentions a file named msc1.cpp, but you can ignore this detail.

Stellen Sie bei dieser Art von Absturz eine vorverarbeitete Reproduktion bereit.For this kind of crash, provide a Preprocessed repro.

Hier ist ein Beispiel der Ausgabe des Compilers bei dieser Art von Absturz: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

Back-End-Absturz (Codegenerierung)Backend (code generation) crash

Back-End-Abstürze erfolgen in der Codegenerierungsphase des Compilers.Backend crashes occur during the code generation phase of the compiler. In der Regel gibt der Compiler den schwerwiegenden Fehler C1001 aus und verweist möglicherweise nicht auf die Quellcodedatei und die Nummer der Codezeile, in der das Problem auftritt.Typically, the compiler emits Fatal Error C1001, and it might not reference the source code file and line number associated with the problem. Häufig wird die Datei „compiler\utc\src\p2\main.c“ erwähnt, dieses Detail können Sie aber ignorieren.It often mentions the file compiler\utc\src\p2\main.c, but you can ignore this detail.

Stellen Sie für diese Art von Absturz eine Linkreproduktion bereit, wenn Sie die Link-Zeitcodegenerierung (Link-Time Code Generation, LTCG) verwenden, die vom Befehlszeilenargument /GL für „cl.exe“ aktiviert wurde.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. Wenn dies nicht der Fall ist, stellen Sie stattdessen eine vorverarbeitete Reproduktion bereit.If not, provide a Preprocessed repro instead.

Hier finden Sie ein Beispiel der Ausgabe des Compilers bei einem Back-End-Absturz, wenn LTCG nicht verwendet wird.Here's example compiler output for a backend crash in which LTCG isn't used. Wenn Ihre Compilerausgabe wie folgt aussieht, sollten Sie eine vorverarbeitete Reproduktion bereitstellen.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

Wenn in der Zeile, die mit INTERNAL COMPILER ERROR beginnt, „link.exe“ anstatt „cl.exe“ angegeben ist, war LTCG aktiviert.If the line that begins with INTERNAL COMPILER ERROR mentions link.exe, rather than cl.exe, LTCG was enabled. Stellen Sie in diesem Fall eine Linkreproduktion bereit.Provide a Link repro in this case. Wenn aus der Fehlermeldung des Compilers nicht hervorgeht, ob LTCG aktiviert wurde, sehen Sie sich die Befehlszeilenargumente an.When it's not clear whether LTCG was enabled from the compiler error message, examine the command-line arguments. Sie haben diese in einem vorherigen Schritt für das Befehlszeilenargument /GL aus Ihrem Buildprotokoll kopiert.You copied them from your build log, in a previous step for the /GL command-line argument.

LinkerabstürzeLinker crash

Linkerabstürze treten in der Verknüpfungsphase nach Ausführung des Compilers auf.Linker crashes occur during the linking phase, after the compiler has run. In der Regel gibt der Linker Linkertoolfehler LNK1000 aus.Typically, the linker will emit Linker Tools Error LNK1000.

Hinweis

Wenn in der Ausgabe „C1001“ oder „LTCG“ erwähnt wird, lesen Sie stattdessen den Abschnitt Back-End-Absturz (Codegenerierung).If the output mentions C1001 or involves Link-Time Code Generation, refer to Backend (code generation) crash instead.

Stellen Sie bei dieser Art von Absturz eine Linkreproduktion bereit.For this kind of crash, provide a Link repro.

Hier sehen Sie ein Beispiel für die Compilerausgabe bei dieser Art von Absturz: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

Wenn inkrementelle Verknüpfungen aktiviert sind und der Absturz nach der erfolgreichen anfänglichen Verknüpfung stattgefunden hat (d.h. erst nach der ersten vollständigen Verknüpfung, auf der nachfolgende inkrementelle Verknüpfungen basieren), stellen Sie eine Kopie der Objekt- und Bibliotheksdateien (OBJ und LIB) bereit, die den Quelldateien entsprechen, die nach Abschluss der anfänglichen Verknüpfung geändert wurden.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.

Generierung von fehlerhaftem CodeBad code generation

Eine Generierung von fehlerhaftem Code kommt selten vor.Bad code generation is rare. Sie tritt auf, wenn der Compiler irrtümlicherweise falschen Code erzeugt, der zum Absturz Ihrer Anwendung zur Laufzeit führt.It occurs when the compiler mistakenly generates incorrect code that causes your application to crash at runtime. Stattdessen sollte er korrekten Code generieren oder ein Problem zur Kompilierzeit erkennen.Instead, it should generate correct code, or detect a problem at compile time. Wenn Sie der Ansicht sind, dass das aufgetretene Problem zur Generierung von fehlerhaftem Code führt, erstellen Sie Ihren Bericht analog zu Back-End-Absturz (Codegenerierung).If you believe the problem you've found results in bad code generation, treat your report the same as a Backend (code generation) crash.

Stellen Sie für diese Art von Absturz eine Linkreproduktion bereit, wenn Sie das Befehlszeilenargument /GL für „cl.exe“ verwenden.For this kind of crash, provide a Link repro if you're using the /GL command-line argument to cl.exe. Andernfalls stellen Sie eine vorverarbeitete Reproduktion bereit.Provide a Preprocessed repro if not.

Generieren einer ReproduktionHow to generate a repro

Eine gute Reproduktion ist entscheidend, damit wir die Quelle des Problems ermitteln können.To help us track down the source of the problem, a good repro is vital. Bevor Sie einen der im Folgenden beschriebenen Schritte für bestimmte Arten von Reproduktionen ausführen, versuchen Sie, den Code, der das Problem veranschaulicht, so weit wie möglich zu reduzieren.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. Versuchen Sie, Abhängigkeiten, erforderliche Header und Bibliotheken so weit wie möglich zu vermeiden.Try to eliminate or minimize dependencies, required headers, and libraries. Beschränken Sie die verwendeten Compileroptionen und Präprozessordefinitionen, wenn möglich.Limit the compiler options and preprocessor definitions used, if possible.

Es folgenden Anweisungen zum Generieren der verschiedenen Arten von Reproduktionen, mit deren Hilfe Sie verschiedene Arten von Problemen melden.Below are instructions for generating the various kinds of repros you'll use to report different kinds of problems.

Vorverarbeitete ReproduktionenPreprocessed repros

Eine vorverarbeitete Reproduktion ist eine einzelne Quelldatei, die ein Problem veranschaulicht.A Preprocessed repro is a single source file that demonstrates a problem. Sie wird aus der Ausgabe des C-Präprozessors generiert.It's generated from the output of the C preprocessor. Um eine solche Datei zu erstellen, verwenden Sie die Compileroption /P in der ursprünglichen Quelldatei für die Reproduktion.To create one, use the /P compiler option on the original repro source file. Diese Option fügt die enthaltenen Header inline ein, um Abhängigkeiten von zusätzlichen Quell- und Headerdateien zu entfernen.This option inlines the included headers to remove dependencies on additional source and header files. Die Option löst auch Makros, bedingte #ifdef-Anweisungen und andere Präprozessorbefehle auf, für die eine Abhängigkeit von Ihrer lokalen Umgebung bestehen könnte.The option also resolves macros, #ifdef conditionals, and other preprocessor commands that could depend on your local environment.

Hinweis

Vorverarbeitete Reproduktionen sind für Probleme nicht besonders nützlich, die das Ergebnis von Fehlern der Implementierung unserer Standardbibliothek sein können, da die neueste in Bearbeitung befindliche Implementierung häufig ausgetauscht wird, um zu prüfen, ob das Problem bereits behoben wurde.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. Führen Sie in diesem Fall keine Vorverarbeitung der Reproduktion aus. Wenn Sie das Problem nicht zu einer einzelne Quelldatei reduzieren können, packen Sie Ihren Code in eine ZIP-Datei o.ä., oder erwägen Sie eine IDE-Projektreproduktion.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. Weitere Informationen finden Sie unter Andere Reproduktionen.For more information, see Other repros.

So erfolgt die Vorverarbeitung einer QuellcodedateiTo preprocess a source code file

  1. Erfassen Sie die Befehlszeilenargumente, die zum Erstellen Ihrer Reproduktion verwendet wurden, wie unter So melden Sie den Inhalt der Befehlszeile beschrieben.Capture the command-line arguments used to build your repro, as described in To report the contents of the command line.

  2. Öffnen Sie die Developer-Eingabeaufforderung, die der Version von Visual Studio entspricht, und die Konfigurationsarchitektur, die zum Erstellen Ihres Projekts verwendet wurde.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. Wechseln Sie zu dem Verzeichnis, das die Reproduktion Ihres Projekts enthält.Change to the directory that contains your repro project.

  4. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl cl /P Argumente Dateiname.cpp ein.In the developer command prompt console window, enter the command cl /P arguments filename.cpp. Verwenden Sie die oben erfasste Liste der Argumente als Argumente.For arguments, use the list of arguments you captured above. Dateiname.cpp ist der Name Ihrer Reproduktionsquelldatei.filename.cpp is the name of your repro source file. Dieser Befehl repliziert die Befehlszeile, die Sie für die Reproduktion verwendet haben, beendet jedoch die Kompilierung nach dem Durchlauf des Präprozessors.This command replicates the command line you used for the repro, but stops the compilation after the preprocessor pass. Dann schreibt der Befehl den vorverarbeiteten Quellcode in die Datei Dateiname.i.Then it writes the preprocessed source code to filename.i.

Wenn Sie eine C++- oder CX-Quellcodedatei vorverarbeiten oder das Feature „C++-Module“ verwenden, sind einige zusätzliche Schritte erforderlich.If you're preprocessing a C++/CX source code file, or you're using the C++ Modules feature, some additional steps are required. Weitere Informationen finden Sie in den folgenden Abschnitten.For more information, see the sections below.

Nachdem Sie die vorverarbeitete Datei generiert haben, sollten Sie sicherstellen, dass das Problem immer noch reproduziert wird, wenn Sie die vorverarbeitete Datei kompilieren.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.

So bestätigen Sie, dass die vorverarbeitete Datei den Fehler weiterhin reproduziertTo confirm the preprocessed file still repros the error

  1. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl cl Argumente /TP Dateiname.i ein, um „cl.exe“ anzuweisen, die vorverarbeitete Datei als C++-Quelldatei zu kompilieren.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. Diese Argumente sind die gleichen wie oben erfasst, aber ohne die Argumente /D und /I.The arguments are the same arguments captured above, but with any /D and /I arguments removed. Das liegt daran, dass diese bereits in der vorverarbeiteten Datei enthalten waren.That's because they've already been included in the preprocessed file. Dateiname.i ist der Name Ihrer vorverarbeiteten Datei.filename.i is the name of your preprocessed file.

  2. Vergewissern Sie sich, dass das Problem reproduziert wird.Confirm that the problem is reproduced.

Fügen Sie Ihrem Bericht schließlich die vorverarbeitete Reproduktion (Dateiname.i) an.Finally, attach the preprocessed repro filename.i to your report.

Vorverarbeitete C++/CX WinRT/UWP-CodereproduktionenPreprocessed C++/CX WinRT/UWP code repros

Wenn Sie C++ oder CX verwenden, um Ihre ausführbare Datei zu erstellen, sind einige zusätzliche Schritte erforderlich, um eine vorverarbeitete Reproduktion zu erstellen und zu überprüfen.If you're using C++/CX to build your executable, there are some extra steps required to create and validate a preprocessed repro.

Vorverarbeiten von C++/CX-QuellcodeTo preprocess C++/CX source code

  1. Erstellen Sie wie unter To preprocess a source code file (Vorverarbeiten einer Quellcodedatei) beschrieben eine vorverarbeitete Quelldatei.Create a preprocessed source file as described in To preprocess a source code file.

  2. Durchsuchen Sie die Datei Dateiname.i nach #using-Direktiven.Search the generated filename.i file for #using directives.

  3. Erstellen Sie eine Liste aller Dateien, auf die verwiesen wird.Make a list of all of the referenced files. Lassen Sie alle Windows*.winmd- und platform.winmd-Dateien sowie „mscorlib.dll“ aus.Leave out any Windows*.winmd files, platform.winmd files, and mscorlib.dll.

Wenn Sie überprüfen möchten, ob die vorverarbeitete Datei das Problem immer noch reproduziert,To prepare to validate that the preprocessed file still reproduces the problem,

  1. erstellen Sie ein neues Verzeichnis für die vorverarbeitete Datei, und kopieren Sie sie in das neue Verzeichnis.Create a new directory for the preprocessed file and copy it to the new directory.

  2. Kopieren Sie die WINMD-Dateien aus Ihrer #using-Liste in das neue Verzeichnis.Copy the .winmd files from your #using list to the new directory.

  3. Erstellen Sie eine leere vccorlib.h-Datei im neuen Verzeichnis.Create an empty vccorlib.h file in the new directory.

  4. Bearbeiten Sie die vorverarbeitete Datei, um alle #using-Direktiven für „mscorlib.dll“ zu entfernen.Edit the preprocessed file to remove any #using directives for mscorlib.dll.

  5. Bearbeiten Sie die vorverarbeitete Datei, um alle absoluten Pfade in die reinen Dateinamen der kopierten WINMD-Dateien zu ändern.Edit the preprocessed file to change any absolute paths to just the bare filenames for the copied .winmd files.

Überprüfen Sie wie zuvor, dass die vorverarbeitete Datei das Problem immer noch reproduziert.Confirm that the preprocessed file still reproduces the problem, as above.

Reproduktionen vorverarbeiteter C++-ModulePreprocessed C++ Modules repros

Wenn Sie das Modulfeature des C++-Compilers verwenden, sind verschiedene Schritte erforderlich, um eine vorverarbeitete Reproduktion zu erstellen und zu überprüfen.If you're using the Modules feature of the C++ compiler, there are some different steps required to create and validate a preprocessed repro.

Vorverarbeiten einer Quellcodedatei, die ein Modul verwendetTo preprocess a source code file that uses a module

  1. Erfassen Sie die Befehlszeilenargumente, die zum Erstellen Ihrer Reproduktion verwendet wurden, wie unter So melden Sie den Inhalt der Befehlszeile beschrieben.Capture the command-line arguments used to build your repro, as described in To report the contents of the command line.

  2. Öffnen Sie die Developer-Eingabeaufforderung, die der Version von Visual Studio entspricht, und die Konfigurationsarchitektur, die zum Erstellen Ihres Projekts verwendet wurde.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. Wechseln Sie zu dem Verzeichnis, das die Reproduktion Ihres Projekts enthält.Change to the directory that contains your repro project.

  4. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl cl /P Argumente Dateiname.cpp ein.In the developer command prompt console window, enter the command cl /P arguments filename.cpp. Die Argumente sind die oben erfassten Argumente, und Dateiname.cpp ist der Name der Quelldatei, die das Modul nutzt.The arguments are the arguments captured above, and filename.cpp is the name of the source file that consumes the module.

  5. Ändern Sie das Verzeichnis, das das Reproduktionsprojekt enthält, das die Modulschnittstelle (die IFC-Ausgabe) erstellt hat.Change to the directory that contains the repro project that built the module interface (the .ifc output).

  6. Erfassen Sie die Befehlszeilenargumente, die zum Erstellen der Modulschnittstelle verwendet wurden.Capture the command-line arguments used to build your module interface.

  7. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl cl /P Argumente Modulname.ixx ein.In the developer command prompt console window, enter the command cl /P arguments modulename.ixx. Die Argumente sind die oben erfassten Argumente, und Modulname.ixx ist der Name der Datei, die die Modulschnittstelle nutzt.The arguments are the arguments captured above, and modulename.ixx is the name of the file that creates the module interface.

Nachdem Sie die vorverarbeitete Datei generiert haben, sollten Sie sicherstellen, dass das Problem immer noch reproduziert wird, wenn Sie die vorverarbeitete Datei verwenden.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.

So bestätigen Sie, dass die vorverarbeitete Datei den Fehler weiterhin reproduziertTo confirm the preprocessed file still repros the error

  1. Wechseln Sie im Fenster der Entwicklerkonsole zu dem Verzeichnis, das die Reproduktion Ihres Projekts enthält.In the developer console window, change back to the directory that contains your repro project.

  2. Geben Sie wie zuvor den Befehl cl Argumente /TP Dateiname.i ein, um die vorverarbeitete Datei so zu kompilieren, als wäre sie eine C++-Quelldatei.Enter the command cl arguments /TP filename.i as above, to compile the preprocessed file as if it were a C++ source file.

  3. Überprüfen Sie wie zuvor, dass die vorverarbeitete Datei das Problem immer noch reproduziert.Confirm that the problem is still reproduced by the preprocessed file.

Fügen Sie die vorverarbeiteten Reproduktionsdateien (Dateiname.i und Modulname.i) schließlich zusammen mit der IFC-Ausgabe Ihrem Bericht hinzu.Finally, attach the preprocessed repro files (filename.i and modulename.i) along with the .ifc output to your report.

Bei einer Linkreproduktion handelt es sich um die vom Linker generierten Inhalte eines Verzeichnisses, die entweder von der Umgebungsvariable link_repro oder als Argument für die Linkeroption /LINKREPRO angegeben werden.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. Sie enthält Buildartefakte, die zusammen ein Problem veranschaulichen, das zur Verknüpfungszeit auftritt.It contains build artifacts that collectively demonstrate a problem that occurs at link time. Beispiele hierfür sind Back-End-Abstürze, bei denen die Link-Zeitcodegenerierung involviert ist, oder Linkerabstürze.Examples include a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. Diese Buildartefakte werden in Form von Linkereingaben benötigt, damit das Problem reproduziert werden kann.These build artifacts are the ones needed as linker input so the problem can be reproduced. Mit dieser Umgebungsvariable lässt sich eine Linkreproduktion ganz einfach erstellen.A link repro can be created easily by using this environment variable. Sie aktiviert die integrierte Funktion des Linkers zum Generieren einer Reproduktion.It enables the linker's built-in repro generation capability.

  1. Erfassen Sie die Befehlszeilenargumente, die zum Erstellen Ihrer Reproduktion verwendet wurden, wie unter So melden Sie den Inhalt der Befehlszeile beschrieben.Capture the command-line arguments used to build your repro, as described in To report the contents of the command line.

  2. Öffnen Sie die Developer-Eingabeaufforderung, die der Version von Visual Studio entspricht, und die Konfigurationsarchitektur, die zum Erstellen Ihres Projekts verwendet wurde.Open the Developer Command Prompt that matches the Visual Studio version and configuration architecture used to build your project.

  3. Wechseln Sie im Konsolenfenster der Developer-Eingabeaufforderung zu dem Verzeichnis, das die Reproduktion Ihres Projekts enthält.In the developer command prompt console window, change to the directory that contains your repro project.

  4. Geben Sie mkdir linkrepro ein, um ein Verzeichnis mit dem Namen linkrepro für die Linkreproduktion zu erstellen.Enter mkdir linkrepro to create a directory named linkrepro for the link repro. Sie können auch einen anderen Namen verwenden, um eine andere Linkreproduktion zu erfassen.You can use a different name to capture another link repro.

  5. Geben Sie den Befehl set link_repro=linkrepro ein, um die Umgebungsvariable link_repro auf das Verzeichnis festzulegen, das Sie erstellt haben.Enter the command set link_repro=linkrepro to set the link_repro environment variable to the directory you created. Wenn Ihr Build von einem anderen Verzeichnis aus ausgeführt wird, was bei komplexeren Projekten häufig der Fall ist, sollten Sie für link_repro stattdessen den vollständigen Pfad zu Ihrem Verzeichnis für die Linkreproduktion festlegen.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. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl devenv ein, um das reproduzierte Projekt in Visual Studio zu erstellen.To build the repro project in Visual Studio, in the developer command prompt console window, enter the command devenv. So wird sichergestellt, dass der Wert der Umgebungsvariablen link_repro für Visual Studio sichtbar ist.It ensures that the value of the link_repro environment variable is visible to Visual Studio. Verwenden Sie zum Erstellen des Projekts über die Befehlszeile die oben erfassten Befehlszeilenargumente, um den reproduzierten Build zu duplizieren.To build the project at the command line, use the command-line arguments captured above to duplicate the repro build.

  7. Erstellen Sie das reproduzierte Projekt, und vergewissern Sie sich, dass das erwartete Problem aufgetreten ist.Build your repro project, and confirm that the expected problem has occurred.

  8. Wenn Sie Visual Studio für den Build verwendet haben, schließen Sie das Programm.Close Visual Studio, if you used it to do the build.

  9. Geben Sie im Konsolenfenster der Developer-Eingabeaufforderung den Befehl set link_repro= ein, um die Umgebungsvariable link_repro zu löschen.In the developer command prompt console window, enter the command set link_repro= to clear the link_repro environment variable.

Packen Sie abschließend die Reproduktion, indem Sie das gesamte Verzeichnis für die Linkreproduktion in eine ZIP-Datei o.ä. komprimieren, und fügen Sie diese an Ihren Bericht an.Finally, package the repro by compressing the entire linkrepro directory into a .zip file or similar, and attach it to your report.

Die Linkeroption /LINKREPRO hat dieselbe Auswirkung wie die Umgebungsvariable link_repro.The /LINKREPRO linker option has the same effect as the link_repro environment variable. Sie können die Option /LINKREPROTARGET verwenden, um den Namen anzugeben, nach dem für die generierte Linkreproduktion gefiltert werden soll.You can use the /LINKREPROTARGET option to specify the name to filter on for the generated link repro. Damit Sie die Option /LINKREPROTARGET verwenden können, müssen Sie außerdem die Linkeroption /OUT angeben.To use /LINKREPROTARGET, you must also specify the /OUT linker option.

  1. Erstellen Sie ein Verzeichnis für die Linkreproduktion.Create a directory to hold the link repro. Im Folgenden wird der von Ihnen erstellte vollständige Verzeichnispfad als directory-path bezeichnet.We'll refer to the full directory path you create as directory-path. Setzen Sie den Pfad in doppelte Anführungszeichen, wenn er Leerzeichen enthält.Use double quotes around the path if it includes spaces.

  2. Fügen Sie der Linkerbefehlszeile den Befehl /LINKREPRO: directory-path hinzu.Add the /LINKREPRO:directory-path command to the linker command line. Öffnen Sie in Visual Studio das Dialogfeld Eigenschaftenseiten für Ihr Projekt.In Visual Studio, open the Property Pages dialog for your project. Klicken Sie auf der Eigenschaftenseite auf Konfigurationseigenschaften > Linker > Befehlszeile.Select the Configuration Properties > Linker > Command Line property page. Geben Sie anschließend in das Feld Zusätzliche Optionen die Option /LINKREPRO: directory-path ein.Then, enter the /LINKREPRO:directory-path option in the Additional Options box. Klicken Sie auf OK, um die Änderungen zu speichern.Choose OK to save your changes.

  3. Erstellen Sie das reproduzierte Projekt, und vergewissern Sie sich, dass das erwartete Problem aufgetreten ist.Build your repro project, and confirm that the expected problem has occurred.

Packen Sie abschließend die Reproduktion, indem Sie das gesamte Verzeichnis der Linkreproduktion (directory-path) in eine ZIP-Datei o.ä. komprimieren, und fügen Sie diese an Ihren Bericht an.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.

Andere ReproduktionenOther repros

Wenn Sie das Problem nicht auf eine einzelne Quelldatei oder vorverarbeitete Reproduktion reduzieren können und das Problem keine Linkreproduktion erfordert, können wir ein IDE-Projekt untersuchen.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. Alle Hinweise zum Erstellen einer sinnvollen Reproduktion gelten immer noch: Der Code sollte minimal und eigenständig sein.All the guidance on how to create a good repro still applies: The code ought to be minimal and self-contained. Das Problem sollte in unseren neuesten Tools auftreten und ggf. in anderen Compilern nicht zu beobachten sein.The problem should occur in our most recent tools, and if relevant, shouldn't be seen in other compilers.

Erstellen Sie Ihre Reproduktion als minimales IDE-Projekt, und erstellen Sie dann ein Paket, indem Sie die gesamte Verzeichnisstruktur in einer ZIP-Datei o.ä. komprimieren und diese an Ihren Bericht anfügen.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.

Möglichkeiten zum Senden Ihres BerichtsWays to send your report

Sie haben mehrere gute Möglichkeiten, uns Ihren Bericht zu übermitteln.You have a couple of good ways to get your report to us. Die können das in Visual Studio integrierte Tool „Problem melden“ oder die Seiten der Visual Studio Developer Community verwenden.You can use Visual Studio's built-in Report a Problem Tool, or the Visual Studio Developer Community pages. Unten auf dieser Seite finden Sie auch eine Schaltfläche Produktfeedback.There's also a Product feedback button at the bottom of this page. Diese Entscheidung richtet sich danach, ob Sie die integrierten Tools in der IDE verwenden möchten, um Screenshots zu erfassen und Ihren Bericht zu organisieren.The choice depends on whether you want to use the built-in tools in the IDE to capture screenshots and organize your report. Wenn Sie dies nicht möchten, können Sie direkt die Website der Developer Community nutzen.If you prefer not to, you can use the Developer Community website directly.

Hinweis

Unabhängig davon, wie Sie den Bericht senden, respektiert Microsoft Ihre Privatsphäre.Regardless of how you submit your report, Microsoft respects your privacy. Microsoft verpflichtet sich der Einhaltung aller Datenschutzgesetze- und regeln.Microsoft is committed to compliance with all data privacy laws and regulations. Informationen dazu, wie wir Daten behandeln, die Sie uns senden, finden Sie in der Datenschutzerklärung von Microsoft.For information about how we treat the data that you send us, see the Microsoft Privacy Statement.

Nutzen des Tools „Problem melden“Use the Report a Problem tool

Das Tool Problem melden in Visual Studio bietet Benutzern von Visual Studio die Möglichkeit, Probleme mit einigen wenigen Mausklicks zu melden.The Report a Problem tool in Visual Studio is a way for Visual Studio users to report problems with just a few clicks. Das Tool zeigt ein einfaches Formular an, in dem Sie detaillierte Informationen zu einem gefundenen Problem senden können.It pops up a simple form to send detailed information about the problem you've found. Sie können diesen Bericht dann senden, ohne die IDE verlassen zu müssen.You can then submit your report without ever leaving the IDE.

Es ist einfach und praktisch, von der IDE aus ein Problem über das Tool Problem melden zu melden.Reporting your problem through the Report a Problem tool is easy and convenient from the IDE. Sie können über die Titelleiste darauf zugreifen, indem Sie auf das Symbol Feedback senden neben dem Suchfeld Schnellstart klicken.You can access it from the title bar by choosing the Send Feedback icon next to the Quick Launch search box. Alternativ dazu finden Sie das Tool auf der Menüleiste unter Hilfe > Feedback senden > Problem melden.Or, you can find it on the menu bar in Help > Send Feedback > Report a Problem.

Wenn Sie ein Problem melden möchten, suchen Sie zunächst in der Developer Community nach ähnlichen Problemen.When you choose to report a problem, first search the Developer Community for similar problems. Wenn das Problem bereits zuvor gemeldet wurde, stimmen Sie für den entsprechenden Bericht ab, und fügen Sie Kommentare mit zusätzlichen Einzelheiten hinzu.In case your problem has been reported before, upvote the report and add comments with additional specifics. Wenn Sie kein Problem dieser Art finden, klicken Sie auf die Schaltfläche Neues Problem melden am Ende des Feedbackdialogfelds von Visual Studio, und befolgen Sie die Schritte, um Ihr Problem einzureichen.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.

Verwenden Sie die Seiten der Visual Studio Developer CommunityUse the Visual Studio Developer Community pages

Die Seiten der Visual Studio Developer Community bietet eine weitere einfache Möglichkeit zum Melden von Problemen und zum Finden von Lösungen für Visual Studio und den C++-Compiler, für Tools und für Bibliotheken.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. Es gibt spezifische Developer Community-Seiten für Visual Studio, Visual Studio für Mac, .NET, C++, Azure DevOps Services und TFS.There are specific Developer Community pages for Visual Studio, Visual Studio for Mac, .NET, C++, Azure DevOps Services, and TFS.

Unterhalb der Communityregisterkarten (am oberen Rand jeder Seite) befindet sich ein Suchfeld.Beneath the community tabs, near the top of each page, is a search box. Mit diesem Feld können Sie Beiträge suchen, die Probleme ähnlich dem Ihrem melden.You can use it to find posts that report problems similar to yours. Möglicherweise sind Lösungen oder andere nützliche Informationen bezüglich Ihres Problems bereits vorhanden.You may find a solution or other useful information related to your problem is already available. Wenn jemand zuvor das gleiche Problem gemeldet hat, stimmen Sie für den entsprechenden Bericht ab, und kommentieren Sie ihn, anstatt einen neuen Problembericht zu erstellen.If someone has reported the same problem before, then upvote and comment on that report, rather than create a new problem report. Wenn Sie einen Bericht kommentieren, für einen Bericht abstimmen oder ein neues Problem melden möchten, werden Sie möglicherweise aufgefordert, sich bei Ihrem Visual Studio-Konto anzumelden.To comment, vote, or report a new problem, you may be asked to sign in to your Visual Studio account. Bei der ersten Anmeldung müssen Sie der Developer Community-App Zugriff auf Ihr Profil gewähren.The first time you sign in, you'll have to agree to give the Developer Community app access to your profile.

Verwenden Sie bei Problemen mit dem C++-Compiler, dem Linker und anderen Tools und Bibliotheken die C++-Seite.For issues with the C++ compiler, linker, and other tools and libraries, use the C++ page. Wenn Sie nach Ihrem Problem suchen und es noch nicht gemeldet wurde, wählen Sie die Schaltfläche Problem melden neben dem Suchfeld aus.If you search for your problem, and it hasn't been reported before, choose the Report a problem button next to the search box. Sie können Ihren Reproduktionscode und die Befehlszeile sowie Screenshots, Links zu ähnlichen Diskussionen oder andere Informationen hinzufügen, die Sie für relevant und nützlich halten.You can include your repro code and command line, screenshots, links to related discussions, and any other information you think is relevant and useful.

Tipp

Für andere Arten von Problemen, die möglicherweise in Visual Studio auftreten, jedoch nicht mit dem C++-Toolset zusammenhängen (z.B. Benutzeroberflächenprobleme, defekte IDE-Funktionalität oder allgemeine Abstürze), verwenden Sie das Tool Problem melden in der 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. Dies ist die beste Wahl, da das Tool über Screenshotfunktionen verfügt und Benutzeroberflächenaktionen aufzeichnen kann, die zu dem aufgetretenen Problem geführt haben.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. Diese Art von Problemen kann auch auf der Developer Community-Website nachgeschlagen werden.These kinds of errors can also be looked up on the Developer Community site. Weitere Informationen finden Sie unter Melden eines Problems mit Visual Studio.For more information, see How to report a problem with Visual Studio.

Berichte und DatenschutzReports and privacy

Alle Informationen in Berichten sowie alle Kommentare und Antworten sind standardmäßig öffentlich sichtbar.All information in reports and any comments and replies are publicly visible by default. Dies ist in der Regel ein Vorteil, da die gesamte Community Einblicke in die Probleme, Lösungen und Problemumgehungen anderer Benutzer hat.Normally, it's a benefit, because it allows the entire community to see the issues, solutions, and workarounds other users have found. Wenn Sie Ihre Daten oder Ihre Identität jedoch aus Gründen des Datenschutzes oder des geistigen Eigentums nicht veröffentlichen möchten, gibt es Optionen, die Sie nutzen können.However, if you're concerned about making your data or identity public, for privacy or intellectual property reasons, you have options.

Wenn Sie Ihre Identität nicht offenlegen möchten, erstellen Sie ein neues Microsoft-Konto, das keine personenbezogenen Informationen enthält.If you're concerned about revealing your identity, create a new Microsoft account that doesn't disclose any details about you. Verwenden Sie dieses Konto, um Ihren Bericht zu erstellen.Use this account to create your report.

Fügen Sie keine Informationen, die privat bleiben sollen, in den Titel oder den Inhalt des ursprünglichen Berichts ein, denn dieser ist öffentlich.Don't put anything you want to keep private in the title or content of the initial report, which is public. Geben Sie stattdessen an, dass Sie Details privat in einem separaten Kommentar senden.Instead, say that you'll send details privately in a separate comment. Wenn Sie sicherstellen möchten, dass für Ihren Bericht die richtige Zielgruppe festgelegt ist, sollten Sie cppcompiler in die Themenliste des Problemberichts einfügen.To make sure that your report is directed to the right people, include cppcompiler in the topic list of your problem report. Sobald der Problembericht erstellt ist, können Sie festlegen, wer Ihre Antworten und Anlagen anzeigen kann.Once the problem report is created, it's now possible to specify who can see your replies and attachments.

Erstellen eines Problemberichts für private InformationenTo create a problem report for private information

  1. Klicken Sie im erstellten Bericht auf Kommentar hinzufügen, um eine private Beschreibung des Problems zu erstellen.In the report you created, choose Add comment to create your private description of the problem.

  2. Verwenden Sie im Antwort-Editor das Dropdown-Steuerelement unter den Schaltflächen Senden und Abbrechen, um die Zielgruppe für Ihre Antwort festzulegen.In the reply editor, use the dropdown control below the Submit and Cancel buttons to specify the audience for your reply. Nur die angegebenen Personen können die privaten Antworten sowie enthaltene Bilder, Links und Code anzeigen.Only the people you specify can see these private replies and any images, links, or code you include in them. Wählen Sie Viewable by moderators and the original poster (Sichtbar für Moderatoren und den Verfasser) aus, um die Sichtbarkeit auf Microsoft-Mitarbeiter und sich selbst zu beschränken.Choose Viewable by moderators and the original poster to limit visibility to Microsoft employees and yourself.

  3. Fügen Sie die Beschreibung und weitere erforderliche Informationen, Bilder und Dateianlagen für die Reproduktion hinzu.Add the description and any other information, images, and file attachments needed for your repro. Klicken Sie auf die Schaltfläche Senden, um diese Informationen privat zu senden.Choose the Submit button to send this information privately.

    Für Dateianhänge sind maximal 10 Dateien mit maximal 2 GB zulässig.There's a 2GB limit on attached files, and a maximum of 10 files. Fordern Sie bei größeren Uploads in einem privaten Kommentar eine Upload-URL an.For any larger uploads, request an upload URL in your private comment.

Alle Antworten unter diesem Kommentar haben die Sichtbarkeit, die Sie angegeben haben.Any replies under this comment have the same restricted visibility you specified. Dies gilt auch, wenn das Dropdown-Steuerelement in Antworten den Status der eingeschränkten Sichtbarkeit nicht korrekt anzeigt.It's true even if the dropdown control on replies doesn't show the restricted visibility status correctly.

Seien Sie sehr vorsichtig, um Ihre Privatsphäre nicht zu gefährden und Ihre vertraulichen Daten nicht öffentlich preiszugeben.To maintain your privacy and keep your sensitive information out of public view, be careful. Beschränken Sie alle Interaktionen mit Microsoft auf die Antworten unterhalb eines eingeschränkten Kommentars.Keep all interaction with Microsoft to replies under the restricted comment. Antworten auf andere Kommentare können dazu führen, dass Sie versehentlich vertrauliche Informationen offenlegen.Replies to other comments may cause you to accidentally disclose sensitive information.

So melden Sie einen Fehler in der C++-DokumentationHow to report a C++ documentation issue

Wir verwenden GitHub-Tickets, um Fehler in unserer Dokumentation zu erfassen.We use GitHub issues to track problems reported in our documentation. Sie können GitHub-Tickets jetzt direkt von einer Inhaltsseite aus erstellen. So können Sie besser mit Autoren und Produktteams kommunizieren.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. Wenn Ihnen ein Fehler (ein falsches Codebeispiel, eine verwirrende Erklärung, eine schwerwiegende Auslassung oder auch nur ein Tippfehler) in einer Dokumentation auffällt, können Sie uns ganz leicht darüber informieren.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. Scrollen Sie auf der Seite ganz nach unten, und klicken Sie auf Sign in to give documentation feedback (Anmelden und Feedback zur Dokumentation geben).Scroll to the bottom of the page and select Sign in to give documentation feedback. Sie müssen ein GitHub-Konto einrichten, falls Sie noch keines besitzen.You'll need to create a GitHub account if you don't have one already. Wenn Sie über ein GitHub-Konto verfügen, können Sie alle Issues zu unserer Dokumentation und den zugehörigen Status anzeigen.When you have a GitHub account, you can see all of our documentation issues and their status. Sie erhalten auch Benachrichtigungen, wenn an einem von Ihnen gemeldeten Issue Änderungen vorgenommen wurden.You also get notifications when changes are made for the issue you reported. Weitere Informationen erhalten Sie unter A New Feedback System Is Coming to docs.microsoft.com (Neues Feedbacksystem auf docs.microsoft.com).For more information, see A New Feedback System Is Coming to docs.microsoft.com.

Wenn Sie die Schaltfläche „Feedback zur Dokumentation“ verwenden, erstellen Sie ein dokumentationsbezogenes Issue auf GitHub.You create a documentation issue on GitHub when you use the documentation feedback button. Im Issue werden automatisch einige Informationen zu der Seite ausgefüllt, auf der Sie das Issue erstellen.The issue is automatically filled in with some information about the page you created the issue on. Auf diese Weise erfahren wir, wo das Problem besteht, bearbeiten Sie daher diese Informationen nicht.That's how we know where the problem is located, so don't edit this information. Fügen Sie nur Angaben zu dem Problem hinzu. Wenn Sie möchten, können Sie auch einen Vorschlag zur Fehlerbehebung machen.Just append the details about what's wrong, and if you like, a suggested fix. Unsere C++-Dokumente sind Open Source – wenn Sie also selbst eine Fehlerbehebung einreichen möchten, können Sie dies tun.Our C++ docs are open source, so if you'd like to submit a fix yourself, you can. Weitere Informationen zum Beitragen zur Dokumentation finden Sie im Leitfaden für Mitwirkende auf GitHub.For more information about how you can contribute to our documentation, see our Contributing guide on GitHub.