web-dev-qa-db-ja.com

System.Diagnostics.Debug.Write出力はどこに表示されますか?

次の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を使用していません。これは純粋なコマンドラインです。

136
Frerich Raabe

他の人が指摘したように、これらのストリームを読むためにはリスナーを登録する必要があります。また、Debug.WriteDEBUGビルドフラグが設定されている場合にのみ機能し、Trace.WriteTRACEビルドフラグが設定されている場合にのみ機能することに注意してください。

DEBUGおよび/またはTRACEフラグの設定は、Visual Studioのプロジェクトプロパティで、またはcsc.exeに次の引数を指定することで簡単に実行できます。

/define:DEBUG;TRACE

72

デバッグ中にSystem.Diagnostics.Debug.WriteLineが出力ウィンドウに表示されます(Ctrl+Alt+O)、TraceListenerDebug.Listenersコレクションに追加して、他の場所で出力するDebug.WriteLine呼び出しを指定することもできます。

注:メニューの下でVisual Studioのオプション[すべての出力ウィンドウテキストをイミディエイトウィンドウにリダイレクトする]がオンになっている場合、Debug.WriteLine呼び出しが出力ウィンドウに表示されない場合がありますツールオプションデバッグ一般。 「ツールオプションデバッグ」と表示するには、「ツールオプションすべての設定を表示 "。

107
boardernin

コンソールに表示されるようにするには、TraceListenerを追加する必要があります。

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

デバッグモードの場合、Visual Studioの[出力]ウィンドウにも表示されます。

41
jason

Visual Studioでデバッグしている間に、「出力」ウィンドウを表示します(表示->出力)。そこに表示されます。

9
Pat
5
Andreas Grech

コードにdebug.write( "")と記述すると、「出力ウィンドウ」ではなく「即時ウィンドウ」に出力されます。

あなたはそれを試すことができます。 「即時」ウィンドウを表示する場合(デバッグウィンドウ即時)。

3
kykbr

私の場合の解決策は次のとおりです。

  1. 出力ウィンドウを右クリックします。
  2. 「プログラム出力」を確認してください
2
Ning Zhu

VB.NETの場合、以下が適用されます。 「デバッグ」を選択し、「デバッグの開始」を確認する必要があります。これを押すと到達できます F5

また、Console.WriteLineは、出力ウィンドウで「リリース」としてビルドする場合にのみメッセージを表示します。

前述のように、出力ウィンドウをViewOutputで開き、Console.WriteLineメッセージを表示する場合は「ビルド」を選択し、 Debug.WriteLineまたはTrace.WriteLineメッセージを表示したい。

0
Matthis Kohli