我在VS 2010中创建了“当点击,打印消息”断点时。它可以工作,但它只输出到VS“输出”窗格。我可以使用我的应用程序的控制台窗口吗?
我试过了:
Debug.Listeners.Add(new ConsoleTraceListener());
以及:
var writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);
答案 0 :(得分:5)
可以在应用控制台窗口中打印此消息,但为此您需要使用调试器评估程序:
看一下这段代码:
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);
}
如果在第5行放置断点: Console.WriteLine(i); 当Hit ... 属性设置为: {MessageFromDebugger(“您应该在控制台窗口中看到来自地址$ ADDRESS“)} 的消息:
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
有趣的是,您可以向函数传递在调用范围内有效的参数以及特殊的调试器变量(例如$ ADDRESS,$ PID,$ CALLSTACK等)。我观察到,虽然特殊的调试器变量只是占位符并在提交到函数之前被替换,所以请记住将它们放在双引号中,例如。 {MessageFromDebugger(@“$ CALLSTACK”)}