以下C#程序(使用csc hello.cs
构建)仅在控制台上打印Hello via Console!
,在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进行任何开发,这是纯粹的命令行。
答案 0 :(得分:107)
虽然调试System.Diagnostics.Debug.WriteLine
将显示在输出窗口中( Ctrl + Alt + O ),但您还可以添加TraceListener
集合Debug.Listeners
以指定Debug.WriteLine
来自其他位置的输出调用。
注意:如果您在菜单工具→<下方选中了Visual Studio选项“将所有输出窗口文本重定向到立即窗口”,则Debug.WriteLine
调用可能不会显示在输出窗口中em>选项→调试→常规。要显示“工具→选项→调试”,请选中“工具→选项旁边的复选框→显示所有设置“。
答案 1 :(得分:70)
正如其他人所指出的,必须注册听众以阅读这些流。另请注意,Debug.Write
仅在设置了DEBUG
构建标志时才起作用,而Trace.Write
仅在设置TRACE
构建标志时才起作用。
在Visual Studio的项目属性中轻松完成设置DEBUG
和/或TRACE
标志,或者通过向csc.exe提供以下参数
/define:DEBUG;TRACE
答案 2 :(得分:40)
您需要添加TraceListener
才能看到它们出现在控制台上。
TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);
在调试模式下,它们也会出现在Visual Studio输出窗口中。
答案 3 :(得分:9)
在Visual Studio中进行调试时,显示“输出”窗口(视图 - >输出)。它将显示在那里。
答案 4 :(得分:5)
诊断消息显示在Output Window
中
alt text http://weblogs.asp.net/blogs/romannikitin/WindowsLiveWriter/Sys.DebuginAsp.NetAjaxFramework_3E7D/VS_debug_console_2.png
答案 5 :(得分:3)
当我在代码中编写 debug.write(&#34;&#34;)时,它会在&#34;立即窗口&#34;中输出,而不是&#34;输出窗口&#34;
你可以尝试一下。用于显示&#34;立即&#34;窗口(调试→窗口→立即)。
答案 6 :(得分:2)
我案例的解决方案是:
答案 7 :(得分:0)
对于VB.NET,以下内容适用。你必须选择&#34; Debug&#34;并确保你&#34;开始调试&#34;。按 F5 即可达到此目的。
此外,Console.WriteLine仅在构建为&#34;发布&#34;时显示消息。在“输出”窗口中。
如前所述,使用查看→输出打开“输出”窗口,并确保选择&#34;构建&#34;如果你想看到Console.WriteLine消息或&#34; Debug&#34;如果你想看到Debug.WriteLine或Trace.WriteLine消息。