System.Diagnostics.Debug.Write输出在哪里出现?
以下C#程序(使用csc hello.cs
构build) Hello via Console!
打印出Hello via Console!
在控制台上,并Hello via OutputDebugString
DebugView窗口中的Hello via OutputDebugString
。 但是,我看不到任何一个System.Diagnostics.*
调用。 这是为什么?
using System; using System.Runtime.InteropServices; class Hello { [DllImport("kernel32.dll", CharSet=CharSet.Auto)] public static extern void OutputDebugString(string message); static void Main() { Console.Write( "Hello via Console!" ); System.Diagnostics.Debug.Write( "Hello via Debug!" ); System.Diagnostics.Trace.Write( "Hello via Trace!" ); OutputDebugString( "Hello via OutputDebugString" ); } }
是否有可能需要一些特殊的命令行开关csc
?
我没有为我的任何开发使用Visual Studio,这是纯粹的命令行的东西。
正如其他人所指出的,听众必须注册才能阅读这些stream。 另外请注意, Debug.Write
只有在设置了DEBUG
构build标志的情况下才会起作用,而Trace.Write
只有在TRACE
构build标志被设置的情况下才起作用。
设置DEBUG
和/或TRACE
标志很容易在Visual Studio的项目属性中完成,或者通过向csc.exe提供以下参数
/define:DEBUG;TRACE
debuggingSystem.Diagnostics.Debug.WriteLine
将显示在输出窗口( Ctrl + Alt + O )中,还可以将TraceListener
添加到Debug.Listeners
集合,以指定Debug.WriteLine
调用以在其他位置输出。
注:如果在工具 → 选项 → debugging → 常规下选中了Visual Studio选项“将所有输出窗口文本redirect到立即窗口”,则Debug.WriteLine
调用可能不会显示在输出窗口中。 要显示“ 工具 → 选项 → debugging ”,选中“ 工具 → 选项 → 显示所有设置 ”旁边的checkbox。
您需要添加一个TraceListener
以查看它们出现在控制台上。
TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(writer);
处于debugging模式时,它们也出现在“Visual Studio输出”窗口中。
在Visual Studio中debugging时,显示“输出”窗口(视图 – >输出)。 它会显示在那里。
诊断消息显示在Output Window
当我在代码中写入debug.write(“”)时,它将在“立即窗口”而不是“输出窗口”中输出。
你可以尝试一下。 用于显示“立即”窗口( debugging → 窗口 → 立即 )。
我的情况的解决scheme是:
- 右键单击输出窗口;
- 检查“程序输出”
对于VB.NET,以下适用。 你必须select“debugging”,并确保你“开始debugging”。 这可以通过按F5来达到。
此外,Console.WriteLine将仅在“输出”窗口中构build为“发布”时显示消息。
如前所述,使用View → Output打开Output窗口,如果你想看到Console.WriteLine消息,请确保select“Build”,如果你想看到Debug.WriteLine或Trace.WriteLine消息,请select“Debug”。