Me gustaría agregar un código C # de "solo depuración" que solo se ejecuta si la persona que realiza la depuración lo solicita. En C ++, solía hacer algo similar a lo siguiente:
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
// ...
}
No puedo hacer exactamente lo mismo en C # ya que no hay estática local.
Pregunta : ¿Cuál es la mejor manera de lograr esto en C #?
- ¿Debo usar un campo estático de clase privada con directivas de preprocesador de C # (
#if/#endif DEBUG
)? - ¿Debo usar el atributo condicional (para contener el código) y luego un campo estático de clase privada ( no rodeado por directivas de preprocesador de C #
#if/#endif DEBUG
?). - ¿Algo más?
fuente
Lo que estas buscando es
atributo.
Si, por ejemplo, escribe un método como:
cualquier llamada que realice a este método dentro de su propio código solo se ejecutará en modo de depuración. Si construye su proyecto en modo de lanzamiento, incluso la llamada al "MyLovelyDebugInfoMethod" será ignorada y eliminada de su binario.
Ah, y una cosa más si está tratando de determinar si su código se está depurando actualmente o no en el momento de la ejecución, también es posible verificar si el proceso actual está enganchado por un JIT. Pero todo esto es otro caso. Publique un comentario si esto es lo que está tratando de hacer.
fuente
Puede probar esto si solo necesita que el código se ejecute cuando tiene un depurador adjunto al proceso.
fuente
Creo que vale la pena mencionar que
[ConditionalAttribute]
está en elSystem.Diagnostics;
espacio de nombres. Tropecé un poco cuando obtuve:Error 2 The type or namespace name 'ConditionalAttribute' could not be found (are you missing a using directive or an assembly reference?)
después de usarlo por primera vez (pensé que estaría en
System
).fuente
Si desea saber si está depurando, en todas partes del programa. Utilizar este.
Declarar variable global.
Crear función para verificar el modo de depuración
En el método initialize llame a la función
Ahora en todo el programa. Puede verificar la depuración y realizar las operaciones. ¡Espero que esto ayude!
fuente