System.Diagnostics.Debug.Write输出出现在哪里?

时间:2009-07-21 15:01:37

标签: c# debugging

以下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进行任何开发,这是纯粹的命令行。

8 个答案:

答案 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)

答案 5 :(得分:3)

当我在代码中编写 debug.write(&#34;&#34;)时,它会在&#34;立即窗口&#34;中输出,而不是&#34;输出窗口&#34;

你可以尝试一下。用于显示&#34;立即&#34;窗口(调试窗口立即)。

答案 6 :(得分:2)

我案例的解决方案是:

  1. 右键单击输出窗口;
  2. 检查&#39;程序输出&#39;

答案 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消息。