Eu gostaria de adicionar algum código C # "somente depuração" que só é executado se a pessoa que está depurando o solicitar. Em C ++, eu costumava fazer algo semelhante ao seguinte:
void foo()
{
// ...
#ifdef DEBUG
static bool s_bDoDebugOnlyCode = false;
if (s_bDoDebugOnlyCode)
{
// Debug only code here gets executed when the person debugging
// manually sets the bool above to true. It then stays for the rest
// of the session until they set it to false.
}
#endif
// ...
}
Não posso fazer exatamente o mesmo em C #, pois não há estática local.
Questão : Qual é a melhor maneira de fazer isso em C #?
- Devo usar um campo estático de classe privada com diretivas de pré-processador C # (
#if/#endif DEBUG
)? - Devo usar o atributo Conditional (para manter o código) e, em seguida, um campo estático de classe privada ( não cercado por diretivas de pré-processador C #
#if/#endif DEBUG
?). - Algo mais?
fonte
O que você está procurando é
atributo.
Se você, por exemplo, escreve um método como:
qualquer chamada que você fizer a este método dentro de seu próprio código será executada apenas no modo de depuração. Se você construir seu projeto em modo de lançamento, até mesmo a chamada de "MyLovelyDebugInfoMethod" será ignorada e descartada de seu binário.
Ah, e mais uma coisa, se você está tentando determinar se o seu código está ou não sendo depurado no momento da execução, também é possível verificar se o processo atual está conectado por um JIT. Mas tudo isso junto é outro caso. Poste um comentário se é isso que você está tentando fazer.
fonte
Você pode tentar isso se só precisar que o código seja executado quando tiver um depurador anexado ao processo.
fonte
Acho que vale a pena mencionar que
[ConditionalAttribute]
está noSystem.Diagnostics;
namespace. Eu tropecei um pouco quando cheguei:Error 2 The type or namespace name 'ConditionalAttribute' could not be found (are you missing a using directive or an assembly reference?)
depois de usá-lo pela primeira vez (pensei que teria sido
System
).fonte
Se você quiser saber se está depurando, em todos os lugares do programa. Usa isto.
Declare a variável global.
Criar função para verificar o modo de depuração
No método de inicialização, chame a função
Agora em todo o programa. Você pode verificar a depuração e fazer as operações. Espero que isto ajude!
fonte