Pergunta

Provavelmente eu já deveria saber disso, mas não tenho certeza e não vejo isso documentado.

Eu uso System.Diagnostics.Debug.WriteLine com bastante frequência durante o processo de desenvolvimento para poder rastrear alterações em variáveis ​​​​ou exceções enquanto estou depurando o código.O objetivo disso é facilitar o desenvolvimento e a compreensão do que está acontecendo apenas durante o desenvolvimento.Normalmente comento o código ou excluo-o quando vou para a produção.

Estou me perguntando o que acontece se eu esquecer de comentar o código.Digamos, por exemplo, que durante o ciclo de desenvolvimento, estou rastreando informações de erro que podem registrar uma picada de conexão na janela de saída usando a linha Debug.Write.Obviamente, isso está OK durante o desenvolvimento, mas estou me perguntando se, quando for ao ar, haverá algum risco aqui.Alguém pode anexar um depurador ao meu executável ao vivo e capturar essa saída?Ou é algo que só produz saída no Visual Studio?

E quando passarmos da depuração para o lançamento?Este código será ignorado pelo compilador se compilarmos para lançamento?

Foi útil?

Solução

Todos os membros da classe Debug são marcados com Atributo Condicional, portanto, os sites de chamada não serão compilados em uma versão Release.

Outras dicas

System.Diagnostics.Debug chamadas de método só estão presentes quando o símbolo de compilação condicional "DEBUG" é definido.Por padrão, o símbolo "DEBUG" é definido apenas para compilações de depuração.

Compiladores que suportam ConditionalAttribute Ignore chamadas para esses métodos, a menos que "Debug" seja definido como um símbolo de compilação condicional.

Como todos os métodos de Debug possuem o atributo [Conditional("DEBUG")] neles, se você mudar de Debug para Release você não terá que se preocupar com isso pois as chamadas para esses métodos serão removidas (junto com as outras otimizações de uma versão de lançamento).

As informações de depuração só ficam visíveis quando você está executando Modo de depuração.Em Modo de liberação nenhuma instrução Debug estará visível (você pode usar Vestígio em vez de Depurar se você quiser que essas declarações fiquem visíveis no modo Release).

http://support.microsoft.com/kb/815788

Desde que você compile sem o /d:DEBUG opção ou #define DEBUG, suas chamadas WriteLine não estarão fisicamente presentes em seu código de lançamento;não há como terceiros recuperarem qualquer informação dessas chamadas, pois elas literalmente não estão presentes na versão de lançamento.

Mais detalhes aqui: Classe de depuração (System.Diagnostics) no MSDN

Quase todos os membros do Debug são marcados com ConditionalAttribute.Compiladores como C# pularão chamadas para esses métodos durante a compilação do Release, portanto você está no lado seguro.

Informações do modo aqui:http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top