Enquanto você debuga a aplicação, para visualizar ao propriedades de uma classe, o DataTip é constantemente aberto:

semDebuggerDisplay

Ao abrir, inicialmente o Namespace é exibido. Para visualizar as propriedades é preciso de mais um click no mouse. Se por acaso a classe tiver muitas propriedades, dificulta a tarefa, ainda mais se for um array.

Sem perceber, o debug fica cansativo. Você vai tomar mais café que o normal. Até que outras estratégias são tomadas. Como fazer o Pin de uma propriedade ou usar o Breakpoint condicional.

pin

breakpoint condicional

Estas stratégias em geral são trabalhosas, pois atuam num ponto especifico do código. E caso o problema esteja em outro trecho haverá a necessidade de refazer o procedimento. Logo, mais café.

DebuggerDisplay

O attribute DebbuggerDisplay fará seu debug menos doloroso.

Este atributo controla como um object, property, ou field é exibido nas janelas de debug do Visual Studio. Este atributo pode ser aplicado a types, delegates, properties, fields e assemblies.

O atributo DebuggerDisplay possui um único argumento, que é uma string que será exibida ao invés do Namespace.NomeDaClasse.

Decorando tua classe, toda vez que estiver no debug o DataTip será exibido da seguinte maneira:

DebuggerDisplay

DebuggerDisplay x ToString()

O atributo DebuggerDisplay é interpretado pelo Debug e só funciona quando há uma IDE atachado ao processo.

O ToString() é compilado, o que faz dessa estratégia uma feature da aplicação. Independente se estiver em modo debug ou não.

Se uma classe tiver sobrescrito o método ToString() e também utilizar o DebuggerDisplay, o atributo DebuggerDisplay terá precedência sobre o método ToString().

Utilizar o ToString() com este objetivo de Debug pode ocasionar efeitos colaterais e há uma grande chance de estar inserindo um bug no código.

Espero que tenham gostado, deixem seus comentários, vamos bater um papo!

Referências