2011-10-13 96 views
3

我在VS 2010中創建了「當命中,打印消息」斷點。它可以工作,但只能輸出到VS「輸出」窗格。我可以使用我的應用程序的控制檯窗口嗎?在VS中,使斷點上的打印點使用控制檯

我已經試過:

Debug.Listeners.Add(new ConsoleTraceListener()); 

除了:

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

回答

5

有可能在您的應用程序控制臺窗口打印此消息,但您需要使用調試器評估:

  1. 創建一個方法,當打斷點時你想從調試器調用。
  2. 放置一個斷點,但不是僅提供一條文本消息,而是在花括號中使用方法名稱,例如。 {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); 
    } 

如果你把第5行斷點:Console.WriteLine(I)當打...屬性設置爲:{MessageFromDebugger(「從地址$地址信息」)}你應該在你的控制檯窗口中看到:

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」)}

相關問題