34 votes

Rediriger les méthodes Console.Write ... vers la fenêtre de sortie de Visual Studio lors du débogage

À partir d'un projet d' application console dans Visual Studio , je souhaite rediriger la sortie de Console vers la fenêtre de sortie pendant le débogage.

31voto

Alex Farber Points 19387

Changez le type d'application en Windows avant le débogage. Sans fenêtre de console, Console.WriteLine fonctionne comme Trace.WriteLine. N'oubliez pas de réinitialiser l'application sur le type de console après le débogage.

19voto

dkackman Points 8131
     class DebugWriter : TextWriter
    {        
        public override void WriteLine(string value)
        {
            Debug.WriteLine(value);
            base.WriteLine(value);
        }

        public override void Write(string value)
        {
            Debug.Write(value);
            base.Write(value);
        }

        public override Encoding Encoding
        {
            get { return Encoding.Unicode; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
#if DEBUG         
            if (Debugger.IsAttached)
                Console.SetOut(new DebugWriter());   
#endif

            Console.WriteLine("hi");
        }
    }
 

** Notez que ceci est grossièrement assimilé presque à un pseudo-code. ça marche mais a besoin de travail :) **

5voto

Niike2 Points 530

Vous pouvez le changer en System.Diagnostics.Debug.Write ();

3voto

ivanatpr Points 906

Notez que si vous utilisez la méthode de dkackman mais que vous voulez écrire la sortie dans les deux fenêtres de la console et de la fenêtre de débogage, vous pouvez légèrement modifier son code comme ceci:

 class DebugWriter : TextWriter
{
    //save static reference to stdOut
    static TextWriter stdOut = Console.Out;

    public override void WriteLine(string value)
    {
        Debug.WriteLine(value);
        stdOut.WriteLine(value);
        base.WriteLine(value);
    }

    public override void Write(string value)
    {
        Debug.Write(value);
        stdOut.Write(value);
        base.Write(value);
    }

    public override Encoding Encoding
    {
        get { return Encoding.Unicode; }
    }
}
 

0voto

TobyEvans Points 890

Essayez Trace.Write et utilisez DebugView

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X