Fluid Attacks logo
Contact Us
Young hacker smiling
Zero false positives

Expert intelligence + effective automation

Contact logo Contact Us
GET A DEMO

Depuración de programas

Necesidad

Se está desarrollando una aplicación en C# y se deben habilitar los mensajes de depuracion en las fases de desarrollo de manera que estos puedan ser facilmente deshabilitados en un ambiente de producción.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en C#.

  2. Los eventos de depuración deben estar habilitados en la fase de desarrollo y deshabilitados en un ambiente de producción.

Solución

  1. Para que los eventos de depuración funcionen correctamente en la fase de desarrollo y puedan ser eliminados fácilmente en la etapa de producción, podemos hacer uso de directivas del preprocesador o del uso de clases especializadas para la depuración.[2] Las directivas del preprocesador ayudaran a que el codigo fuente sea facilmente modificado entre diferentes ambientes. Para el primer caso, se debe usar los condicionales del preprocesador junto a la variable DEBUG:

    ejemplo.cs
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    using System;
    class Program
    {
        static void Main(string[] args)
        {
    #if DEBUG
            Console.WriteLine("Using preprocessor");
    #endif
        }
    }
    
  2. Si la variable DEBUG es definida en el momento de compilación, el mensaje "Using preprocessor" es mostrado en pantalla luego de la ejecución:

    csc /define:DEBUG /out:Program.exe Program.cs
    Program.exe
    Using preprocessor
    csc /out:Program.exe Program.cs
    Program.exe
    
  3. Para el uso de clases especializadas para la depuración se deben importar todas las clases relacionadas al nombre de espacio Diagnostics [2]:

    1
    2
    using System;
    using System.Diagnostics;
    
  4. Se define el nombre de la clase y el inicio del programa:

    1
    2
    3
    4
    class Program
    {
        static void Main(string[] args)
        {
    
  5. Utilizamos el método WriteLine de la clase Debug, el cual envía el contenido a listeners especializados para la depuración, en el entorno integrado de desarrollo de C# los resultados son enviados a la pestaña de resultados (CTRL + ALT + O):

    1
    2
    3
    4
    5
            Debug.WriteLine("Debug line");
            Debug.WriteLine("Calling method 1");
            Debug.WriteLine("Calling method 2");
        }
    }
    
  6. Para habilitar este tipo de depuración en un ambiente diferente del ofrecido por Visual Studio, debe agregarse uno o más listeners que estén pendientes de atender los mensajes de depuración. Por ejemplo, para hacerlo mediante la salida estándar (stdout), puede utilizar:

    1
    2
    Debug.Listeners.Clear(); //Solo en caso de que se desee deshabilitar a los demás listeners
    Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
    
  7. Para habilitar este tipo de depuración, el programa debe compilarse indicando la directiva de depuración:

    csc /define:DEBUG /out:Program.exe Program.cs
    Program.exe
    Debug line
    Calling method 1
    Calling method 2
    csc /out:Program.exe Program.cs
    Program.exe
    
  8. De esta manera se facilita el cambio entre los diferentes ambientes. Los mensajes de depuración podran ser facilmente deshabilitados en ambientes productivos y habilitados en ambientes de desarrollo donde es necesaria la depuración.

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. program.cs contiene todas las instrucciones C# del programa.


Service status - Terms of Use