Visual studio 在VS中,使用控制台在断点上打印

Visual studio 在VS中,使用控制台在断点上打印,visual-studio,visual-studio-2010,debugging,breakpoints,Visual Studio,Visual Studio 2010,Debugging,Breakpoints,我在VS2010中做了一个“点击时,打印消息”断点。它可以工作,但只输出到VS“输出”窗格。我可以使用我的应用程序的控制台窗口吗 我试过: Debug.Listeners.Add(new ConsoleTraceListener()); 以及: var writer = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(writer); 可以在应用程序控制台窗口中打印此消息,但为此,您需要使用调试器计算器

我在VS2010中做了一个“点击时,打印消息”断点。它可以工作,但只输出到VS“输出”窗格。我可以使用我的应用程序的控制台窗口吗

我试过:

Debug.Listeners.Add(new ConsoleTraceListener());
以及:

var writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);

可以在应用程序控制台窗口中打印此消息,但为此,您需要使用调试器计算器:

  • 创建一个方法,当遇到断点时,要从调试器调用该方法
  • 放置断点,但不要只提供文本消息,而是使用大括号中的方法名,例如{CallFromDebugger()}
  • 请查看以下代码:

        static void Main(string[] args)
        {
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine(i);
            }
            Console.ReadKey();
        }
    
        [Conditional("DEBUG")]
        static void MessageFromDebugger(string message)
        {
            Console.WriteLine("I was called from the debugger evaluator: {0}", message);
        }
    
    有趣的是,您可以向函数传递在调用范围内有效的参数以及特殊的调试器变量(如$ADDRESS、$PID、$CALLSTACK等)。我注意到,特殊的调试器变量只是占位符,在提交到函数之前会被替换,所以请记住将它们放在双引号中,例如{MessageFromDebugger(@“$CALLSTACK”)}

    0
    I was called from the debugger evaluator: message from address ConsoleApplication1.Program.Main(string[]) + 0x00000048
    1
    I was called from the debugger evaluator: message from address ConsoleApplication1.Program.Main(string[]) + 0x00000048
    2