13 09 2013
Native Code Debugging – Uma opção perigosa
Olá novamente meu caro leitor!
Estou trazendo hoje mais um daqueles posts rápidos com uma pequena dica que pode acabar ajudando você uma hora ou outra. O título do post parece um pouco tendencioso, dando quase a entender que sou contra Native Code Debugging, o que absolutamente não é a verdade. Não tenho nada contra Native Code Debugging, porém, essa opção que está disponível na aba debugging dos projetos .NET no Visual Studio pode ser um tanto quanto perigosa caso você na realidade não precise debugar código nativo.
Acabei topando por essa opção porque um programador aqui da empresa onde trabalho estava com uma lentidão inexplicável em um projeto .NET. Essa lentidão estava acontecendo só no computador desse programador e, o pior de tudo, somente no branch de produção. Como todo o código da aplicação está armazenado no TFS e esse programador não tinha nenhuma pending change, ficou meio que claro que a lentidão provavelmente estava sendo causada por alguma configuração em nível de projeto na máquina desse programador. Com isso, fomos comparar as nossas configurações de debugging desse projeto e a opção que justamente diferia entre as nossas configurações era o checkbox “Enable native code debugging“:
Por padrão, ao criar um projeto .NET no Visual Studio, essa opção vem desabilitada, como mostra a figura acima. Entretanto, não sei por que essa opção foi habilitada nesse projeto específico nas configurações desse programador. O simples fato de desabilitar essa opção fez com que o tempo de carregamento de uma tela (pesada) caísse de 5 minutos para 10 segundos (o mesmo tempo que já estava demorando na minha máquina).
Mas, enfim, para quê serve essa opção? Como o próprio nome diz, serve para que você consiga debugar código nativo (C++) a partir de um projeto .NET. Ou seja, se você tem uma solução mista, envolvendo tanto projetos .NET quanto projetos C++, provavelmente essa opção faz todo o sentido para você. Porém, caso você esteja trabalhando com uma solução que só tenha projetos .NET (como era o nosso caso nesse projeto especificamente), essa opção não servirá para nada além de deixar sua aplicação muito mais lenta ao debugar.
Então, fica a dica. Se você reparar uma lentidão acima do normal na sua aplicação quando executada em modo de debug, vale a pena conferir se essa opção não está habilitada.
É isso aí, espero que essa dica acabe ajudando algum de vocês. Até a próxima!
André Lima
Utilizando CallerMemberName para simplificar a implementação de INotifyPropertyChanged Explorando as in-app purchases em aplicativos para a Windows Store