コンソールアプリケーションVisual Studioのプロジェクトから、デバッグ中にConsole
の出力を出力ウィンドウにリダイレクトしたいと思います。
デバッグする前に、アプリケーションタイプをWindowsに変更します。コンソールウィンドウがない場合、Console.WriteLineはTrace.WriteLineのように機能します。デバッグ後、アプリケーションをコンソールタイプにリセットすることを忘れないでください。
class DebugWriter : TextWriter
{
public override void WriteLine(string value)
{
Debug.WriteLine(value);
base.WriteLine(value);
}
public override void Write(string value)
{
Debug.Write(value);
base.Write(value);
}
public override Encoding Encoding
{
get { return Encoding.Unicode; }
}
}
class Program
{
static void Main(string[] args)
{
#if DEBUG
if (Debugger.IsAttached)
Console.SetOut(new DebugWriter());
#endif
Console.WriteLine("hi");
}
}
**これは、ほぼ疑似コードにまとめられていることに注意してください。それは動作しますが、作業が必要です:) **
これをSystem.Diagnostics.Debug.Write();に変更できます。
Dkackmanの方法を使用しているが、コンソールウィンドウとデバッグウィンドウの両方に出力を書き込みたい場合は、次のようにコードをわずかに変更できます。
class DebugWriter : TextWriter
{
//save static reference to stdOut
static TextWriter stdOut = Console.Out;
public override void WriteLine(string value)
{
Debug.WriteLine(value);
stdOut.WriteLine(value);
base.WriteLine(value);
}
public override void Write(string value)
{
Debug.Write(value);
stdOut.Write(value);
base.Write(value);
}
public override Encoding Encoding
{
get { return Encoding.Unicode; }
}
}
Trace.Writeを試してDebugViewを使用する
ありがとう、Alex F、Niceソリューションですが、私のプロジェクトはcmakeによって作成されたため、うまくいきませんでした。したがって、Alex Fが提案したように、WIN32
またはMACOSX_BUNDLE
を add_executable
に追加します。
add_executable(target_name WIN32 <source list>)
または、CMakeList.txtを編集できない場合は、_ -DCMAKE_WIN32_EXECUTABLE=1
をcmake
configureコマンドに追加できます。