Como depurar e criar perfil de qualquer EXE com o Visual Studio
Você já precisou depurar ou criar o perfil de um executável (.exe arquivo) que você não pode criar localmente? Então o tipo de projeto menos conhecido do Visual Studio, o projeto EXE, é para você!
No Visual Studio, você pode abrir qualquer EXE como um ‘projeto’. Basta ir para File->Open->Project/Solution e navegar até o arquivo .exe. Como você faria se fosse um arquivo .sln. O Visual Studio abrirá esse EXE como um projeto. Esse recurso existe há muito tempo. Ele funciona em todas as versões do Visual Studio atualmente com suporte e os documentos para ele estão em ‘Depurar um aplicativo que não faz parte de uma solução do Visual Studio’.
Depuração
Assim como em um projeto normal, você pode iniciar a depuração com F5, que iniciará o EXE e anexará o depurador. Se você quiser depurar a inicialização, você pode iniciar com F11, que iniciará o EXE e parará na primeira linha do código do usuário. Ambas as opções estão disponíveis no menu de contexto para o projeto EXE na janela Gerenciador de Soluções, conforme ilustrado abaixo:
Para depuração será necessário ter símbolos (arquivos PDB) para o EXE e quaisquer DLLs que você precisa depurar. Visual Studio seguirá o mesmo processo para tentar obter símbolos como ele faz ao depurar um projeto normal. Como não é provável que os arquivos PDB tenham sido distribuídos ao lado do EXE, convém localizá-los a partir de uma queda de compilação ou, melhor ainda, de um servidor de símbolos. Mais informações e práticas recomendadas para símbolos podem ser encontradas neste blog.
Para depurar com eficiência, você também precisará do código-fonte que foi usado para criar o EXE, mesmo para apenas alguns arquivos que lhe interessam. Você precisará localizar esses arquivos e abri-los no Visual Studio. Se o código-fonte não for exatamente o mesmo que o código-fonte que foi criado, o EXE Visual Studio irá avisá-lo quando você tentar inserir um ponto de interrupção e o ponto de interrupção não será vinculado. Esse comportamento pode ser substituído na janela de visualização Configurações de ponto de interrupção. Na janela de visualização de configurações, clique no texto do link de origem Deve corresponder e, em seguida, marque a caixa para permitir uma fonte incompatível, conforme ilustrado abaixo. É claro que, com uma fonte incompatível, você nunca sabe realmente o que vai acontecer, então use por sua conta e risco.
Se o EXE foi criado com SourceLink habilitado, em seguida, as informações sobre a origem serão incluídas nos PDBs e Visual Studio tentará baixar a fonte automaticamente. Esta é uma boa razão para usar o SourceLink com seus projetos. Mesmo que você tenha um alistamento local, talvez não tenha a mesma versão que foi usada para criar o binário. SourceLink é a sua maneira infalível de se certificar de que a fonte certa está ligada com o binário certo.
Se você não conseguir obter nenhum código-fonte, ainda terá algumas opções:
- Use uma ferramenta para descompilar os assemblies de volta em C#, que você pode recompilar em uma nova montagem para corrigir a antiga.
- O ILSpy é uma ótima opção para isso, mas há muitas outras ferramentas bem pagas e gratuitas por aí.
- [Nota: Vários comentários também apontaram o dnSpy https://github.com/0xd4d/dnSpy como uma ótima solução para isso – obrigado!]
- Use a janela da ferramenta Desmontagem no Visual Studio.
- O documento Origem não encontrada tem um link para exibir a desmontagem. Esteja avisado, se você estiver acostumado a depurar código C#, a exibição de desmontagem é uma ferramenta de último recurso.
Por fim, se você precisar passar algum argumento para o EXE que está sendo depurado, poderá configurá-los junto com outras opções na página Propriedades do projeto (Clique com o botão direito do mouse >Propriedades no nó do projeto no gerenciador de soluções).
Perfil
Você também pode usar as ferramentas de criação de perfil com o EXE iniciando-as a partir do Debug -> Performance Profiling. Na página de inicialização das ferramentas de criação de perfil, você pode selecionar quais ferramentas usar em relação ao EXE. Mais informações sobre criação de perfil podem ser encontradas nos documentos em :https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2019.
Conclusão
É isso. Uma breve visão geral de como você pode usar o Visual Studio para depurar e criar perfis de aplicativos que você não está criando e talvez nem tenha origem para. Então, da próxima vez que você precisar depurar ou criar o perfil de um EXE, não se esqueça de que você pode abri-lo como uma solução no Visual Studio!
Autor : Andy Sterland