Fenster „Problemdetails“
Im Fenster Problemdetails werden strukturierte Diagnosen angezeigt, die vom MSVC-Compiler oder der Codeanalyse für C/C++ ausgegeben wurden.
Wählen Sie Einträge im Fehlerlistenfenster aus, die ein Symbol in der Spalte Details anzeigen, um das Fenster Problemdetails zu öffnen. Das Fenster Problemdetails zeigt die strukturierte Diagnose für den ausgewählten Eintrag an.
Screenshot der Visual Studio-Fehlerliste. Es zeigt eine Tabelle mit einer einzelnen Zeile. Die Zeile stellt einen Compilerfehler dar und enthält den Fehlercode C2665, die Beschreibung „pet: keine überladene Funktion konnte alle Argumenttypen konvertieren“ und ein quadratisches Symbol mit einer vergrößerten Ecke in der Spalte namens Details. Dieses Symbol ist hervorgehoben.
Zwei Szenarien erzeugen diese Diagnose:
- C++-Kompilierungen mit MSBuild und der MSVC-Compiler können strukturierte Diagnosen ausgeben.
- Codeanalysewarnungen, die Key Event-Daten unterstützen, geben strukturierte Diagnosen aus.
Öffnen Sie das Fenster Problemdetails, indem Sie eine der folgenden Aktionen ausführen:
- Während der Eintrag hervorgehoben ist, doppelklicken Sie darauf, oder drücken Sie die EINGABETASTE. Deaktivieren Sie dieses Verhalten mit Tools>Optionen>Text-Editor>C/C++>Erweiterten>Problemdetails beim Doppelklicken anzeigen.
- Wählen Sie das Symbol in der Spalte Details aus.
- Öffnen Sie das Kontextmenü für den Eintrag, und wählen Sie die Option Problemdetails öffnen aus.
Standardmäßig wird das Fenster Problemdetails an derselben Stelle wie das Fenster Fehlerliste geöffnet. Ändern Sie den Speicherort, an dem das Fenster Problemdetails geöffnet wird, indem Sie es an die gewünschte Position verschieben.
Im Fenster Problemdetails werden strukturierte Informationen angezeigt, die möglicherweise geschachtelt sind. Wenn das Fenster geöffnet wird, sind alle Einträge, die geschachtelte untergeordnete Elemente enthalten, reduziert.
Screenshot des Visual Studio-Fensters „Problemdetails“. Es gibt eine Kopfzeile mit demselben Fehlercode und derselben Beschreibung wie der Eintrag „Fehlerliste“ aus der vorherigen. Es gibt auch einen auswählbaren Link mit dem Text cppcon-diag.cpp (Zeile 23). Unterhalb dieser Kopfzeile gibt es Einträge, die erklären, dass die potenziellen Überladungen void pet(cat), void pet(dog) oder void pet(_T0) sind. Der letzte Eintrag erklärt „beim Versuch die Argumentliste (lizard) abzugleichen". Rechts neben jeder Zeile befindet sich grauer Text, der die Datei- und Zeilennummern für jeden Eintrag anzeigt. Alle gehören zu cppcon-diag.cpp und die Zeilennummern sind 7, 6, 18 und 23. Links neben den ersten drei Einträgen befinden sich kleine hohle Pfeile, die nach rechts zeigen, dass diese Einträge erweitert werden können, es aber derzeit nicht sind.
Erweitern Sie einen Eintrag, um seine untergeordneten Elemente anzuzeigen, indem Sie entweder den Pfeil auf der linken Seite eines Eintrags auswählen oder bei hervorgehobenem Eintrag nach Rechts drücken.
Screenshot des Visual Studio-Fensters „Problemdetails“. Die Inhalte sind größtenteils identisch mit dem vorherigen Screenshot, einige der Einträge werden jedoch erweitert, sodass ihre untergeordneten Einträge sichtbar sind. Der erste Eintrag wird erweitert. Es gibt einen geschachtelten Eintrag mit dem Text „void pet(cat) kann Argument 1 nicht von lizard zu cat konvertieren." Dieser Eintrag wird eingerückt und kann erweitert werden. Die zweite Zeile von vorher wird erweitert und zeigt einen unerklärten Eintrag mit dem Wert „void pet(dog) kann Argument 1 nicht von lizard in dog konvertieren.“ Der dritte Eintrag wird erweitert und zeigt einen Eintrag mit dem Text „die zugehörigen Einschränkungen sind nicht erfüllt“ an. Dieser Eintrag hat einen erweiterten untergeordneten Text „das Konzept pettable lizard wird als „false“ ausgewertet“. Dieser Eintrag hat zwei untergeordnete Elemente. Das erste ist unerklärt und zeigt „das Konzept has_member_pet lizard wird als "false“ ausgewertet“ an. Die zweite wird erweitert und zeigt „das Konzept has_default_pet lizard wird als "false“ ausgewertet“ an. Dieses zweite Kind hat zwei Kinder, von denen keines erweitert werden kann. Sie zeigen „is_pettable ist kein Mitglied von lizard“ und „siehe Deklaration von lizard“ an.
Aktivieren oder deaktivieren Sie die strukturierte Diagnose mit der Option Projekt>Eigenschaften>Erweitert>MSVC Structured Output aktivieren. Sie können mehrere Projekte beeinflussen, indem Sie eine Directory.Build.props-Datei mit der UseStructuredOutput-Eigenschaft erstellen, die auf „true“ oder „false“ festgelegt ist.