Pergunta

Im um pouco confuso sobre como usar as classes .NET rastreio e depuração.

Por que você se preocupar com traço em vez de depuração?

Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()

Debug.WriteLine()
Debug.Assert()

Além disso, eu entendo que as declarações de depuração são ignorados quando o seu no modo de configuração Release, mas Se instruções de rastreamento aplicam-se o tempo todo, como isso afeta o desempenho?

Foi útil?

Solução

No nível mais simples, eles têm opções diferentes de compilação - ie Debug.WriteLine etc só é alternado se você tem o símbolo de compilação DEBUG (não comum para compilações), onde, como Trace.WriteLine geralmente será incluído mesmo em compilações

A rota Trace tem-traço ouvintes personalizável, que pode ser canalizada na via configuração; Debug geralmente vai para um depurador como o ouvinte. Claro, existem sistemas de traço 3-parte que oferecem muito mais flexibilidade.

Outras dicas

Você pode ativar dentro e fora de forma independente com a opção de compilador, se você ir para a página de construção de suas propriedades do projeto, você tem algumas caixas lá.

A regra de ouro para mim é que eu uso depuração para informações reais depuração, ou seja, o valor da variável x neste momento é ... etc, e rastreamento para rastrear fluxo de controle através do meu aplicativo (mais spam like).

Como você diz, chamadas de rastreamento só são executados quando você está no modo de versão. Compilar no modo de versão tem alguns benefícios de desempenho que você pode querer na aplicação final, e pode haver outras razões que você quer ativar o modo Release. No entanto, pode haver momentos em que você quer gravar informações para o console de rastreamento, que pode ser visto com aplicações como DbgView de Sysinternal . Estes são tipicamente as mensagens que você não necessariamente deseja enviar para a saída de log, ou que você sempre quer ter disponível para fins de depuração, mesmo que o utilizador tenha desligado o registo.

Você certamente não gostaria de enviar um monte de informações para o console de rastreio, uma vez que impõe uma penalidade de desempenho, mas algumas informações críticas pode ser apropriada.

Eu tendia a utilizar Trace (com um TraceSwitch associado) para esforços registrando em ambientes de libertação - um ajuste rápido do app.config pode então dar diferentes níveis de registo sem a necessidade de recompilação (que pode tornar um problema ir embora de qualquer maneira) ou a necessidade de anexar um depurador. Especialmente útil para problemas que ocorrem apenas em máquinas do cliente por qualquer razão - eu usei isso para sucesso despejo logout de uma classe FTP (nos velhos Framework 1,1 dias) para questões de transferência Rede de ajuda diagnose entre duas empresas

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