Janela Detalhes do problema
A janela Detalhes do problema mostra diagnósticos estruturados emitidos pelo compilador MSVC ou análise de código para C/C++.
Selecione as entradas na janela Lista de Erros que mostram um ícone na coluna Detalhes para abrir a janela Detalhes do Problema. A janela Detalhes do problema mostra o diagnóstico estruturado para a entrada selecionada.
Captura de tela da Lista de Erros do Visual Studio. Ela mostra uma tabela com apenas uma linha. A linha representa um erro do compilador e contém o código de erro C2665, a descriçã"pet: no overloaded function could convert all the argument types" e um ícone de um quadrado com o canto ampliado na coluna chamada Detalhes. O ícone é realçado.
Dois cenários produzem esses diagnósticos:
- Compilações C++ usando MSBuild e o compilador MSVC podem emitir diagnósticos estruturados.
- Os avisos de análise de código que dão suporte a dados de eventos-chave emitem diagnósticos estruturados.
Abra a janela Detalhes do problema seguindo um destes procedimentos:
- Enquanto a entrada estiver realçada, clique duas vezes nela ou pressione Enter. Desabilite esse comportamento com Ferramentas>Opções>Editor de texto>C/C++>Avançado>Mostrar detalhes do problema com duplo clique.
- Selecione o ícone na coluna Detalhes.
- Abra o menu de atalho da entrada e selecione a opção Abrir detalhes do problema.
Por padrão, a janela Detalhes do problema é aberta no mesmo local que a janela Lista de Erros. Altere onde a janela Detalhes do problema é aberta movendo-a para a posição desejada.
A janela Detalhes do problema exibe informações estruturadas que podem ser aninhadas. Quando a janela é aberta, todas as entradas que têm filhos aninhados começam a ser recolhidas.
Captura de tela da janela Detalhes do problema do Visual Studio. Há um cabeçalho mostrando os mesmos código de erro e descrição que a entrada da Lista de Erros de antes. Há também um link selecionável com o texto cppcon-diag.cpp (Linha 23). Abaixo desse cabeçalho há entradas explicando que as sobrecargas potenciais são void pet(cat), void pet(dog) ou void pet(_T0). A entrada final afirma "ao tentar corresponder à lista de argumentos (lizard)". À direita de cada linha há um texto cinza mostrando o arquivo e os números de linha de cada entrada. Todos eles pertencem a cppcon-diag.cpp e os números de linha são 7, 6, 18 e 23, respectivamente. À esquerda das três primeiras entradas há pequenas setas ocas apontando para a direita que significam que essas entradas podem ser expandidas, mas atualmente não o estão.
Expanda uma entrada para exibir os filhos dela selecionando a seta no lado esquerdo de uma entrada ou pressionando Direita com a entrada realçada.
Captura de tela da janela Detalhes do problema do Visual Studio. O conteúdo é basicamente o mesmo que a captura de tela anterior, no entanto, algumas das entradas são expandidas para que as entradas filho delas fiquem visíveis. A primeira entrada é expandida. Há uma entrada aninhada com o texto "void pet(cat) cannot convert argument 1 from lizard to cat". Esta entrada é recuada e pode ser expandida. A segunda linha de antes é expandida, revelando uma entrada não expandida que diz "void pet(dog) cannot convert argument 1 from lizard to dog". A terceira entrada é expandida, revelando uma entrada que contém o texto "the associated constraints are not satisfied." Essa entrada tem um filho expandido com o texto "the concept pettable lizard evaluated to false." Esta entrada tem dois filhos. O primeiro não é expandido e contém o texto "the concept has_member_pet lizard evaluated to false." O segundo é expandido e contém o texto "the concept has_default_pet lizard evaluated to false." Este segundo filho tem dois filhos, nenhum dos quais é expansível. Eles contêm o texto "is_pettable is not a member of lizard" e "see declaration of lizard."
Habilite ou desabilite o diagnóstico estruturado com a opção Projeto>Propriedades>Avançado>Habilitar Saída Estruturada MSVC. Você pode afetar vários projetos criando um arquivo Directory.Build.props com a propriedade UseStructuredOutput definida como true ou false.