Visual Studio Extension para visualização de layout de memória de estrutura C++
Baixe as últimas novidades do Visual Studio Marketplace 2022
Baixe as últimas novidades do Visual Studio Marketplace 2019
Em C++, o layout da estrutura pode ser afetado por diferentes fatores. Para produzir código orientado para cache de dados de alto desempenho ou reduzir o consumo de memória da estrutura, é importante estar ciente dos layouts de classe no mesmo local onde o código é criado, atualizado, removido ou depurado. Esta extensão permite que os programadores visualizem suas estruturas no Visual Studio com apenas um clique.
Clique com o botão direito em cima de qualquer definição de estrutura C++ e selecione Mostrar layout de estrutura (ou pressione Alt+L ) para visualizar o layout da memória.
Neste modo de visualização, os tipos com filhos são empilhados para permitir a navegação de entrada e saída e obter uma melhor noção da estrutura geral.
O modo plano ignora todos os grupos e mostra apenas uma camada, produzindo uma visualização mais compacta.
O Struct Layout pode usar diferentes sistemas para analisar os arquivos C++ e extrair as informações do layout da memória. Dependendo da complexidade e das peculiaridades do sistema de compilação e da configuração do Visual Studio, uma opção será mais conveniente que as outras. O método usado pode ser alterado na janela Opções de extensão
Quando uma solicitação de Layout é feita, a extensão faz o seguinte:
Este método processará a localização do arquivo por meio de um executável Clang LibTooling que analisará o arquivo e os cabeçalhos atuais. Este método pode fornecer resultados realmente precisos, pois recupera os dados diretamente do Clang AST, mas precisará do contexto de construção exato para poder compreender adequadamente todo o código.
Quando uma consulta ao clang libtooling é acionada, a extensão tentará coletar os seguintes dados do projeto ativo e da configuração:
Este método aproveita o fato de que o pdb (Program DataBase) provavelmente conterá todas as informações de layout para todos os tipos definidos pelo usuário. Este aplicativo usa o DIA SDK (Debug Interface Access) para abrir e consultar o pdb. Este sistema pode ser útil se nossa configuração não estiver pronta para ser compilada com um compilador Clang, o sistema de compilação for bastante complexo, atingindo alguns casos extremos ou se tivermos algum código específico do MSVC. A ressalva é que precisaríamos compilar os projetos antes de realizar qualquer consulta para manter os pdbs atualizados.
Este projeto está aberto a contribuições de código.
Se você achou esta extensão útil, você sempre pode me comprar uma xícara de café.