Poniższy program C # (zbudowany za pomocą csc hello.cs
) drukuje tylko Hello via Console!
na konsoli iw Hello via OutputDebugString
oknie DebugView. Jednak nie widzę żadnego z System.Diagnostics.*
połączeń. Dlaczego?
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" );
}
}
Czy mogą być wymagane jakieś specjalne przełączniki wiersza polecenia csc
?
Nie używam Visual Studio do żadnego z moich programów, to jest czysta linia poleceń.
Odpowiedzi:
Jak zauważyli inni, słuchacze muszą być zarejestrowani, aby móc czytać te strumienie. Zauważ również, że
Debug.Write
będzie działać tylko wtedy, gdyDEBUG
flaga budowania jest ustawiona, natomiastTrace.Write
będzie działać tylko wtedy, gdyTRACE
flaga budowania jest ustawiona.Ustawienie
DEBUG
i / lubTRACE
flagi można łatwo wykonać we właściwościach projektu w programie Visual Studio lub przez dostarczenie następujących argumentów do csc.exeźródło
Podczas gdy debugowanie
System.Diagnostics.Debug.WriteLine
zostanie wyświetlone w oknie danych wyjściowych ( Ctrl+ Alt+ O), możesz również dodaćTraceListener
doDebug.Listeners
kolekcji, aby określićDebug.WriteLine
wywołania danych wyjściowych w innych lokalizacjach.Uwaga:
Debug.WriteLine
wywołania mogą nie być wyświetlane w oknie wyjściowym, jeśli w menu Narzędzia → Opcje → Debugowanie → Ogólne zaznaczono opcję Visual Studio „Przekieruj cały tekst okna wyjściowego do okna bezpośredniego” . Aby wyświetlić „ Narzędzia → Opcje → Debugowanie ”, zaznacz pole obok „ Narzędzia → Opcje → Pokaż wszystkie ustawienia ”.źródło
Musisz dodać,
TraceListener
aby zobaczyć je na konsoli.Pojawiają się również w oknie danych wyjściowych programu Visual Studio w trybie debugowania.
źródło
OutputDebugString()
i (jądro)DbgPrint().
Debug.Write()
jeśli jego ustawienia przechwytywania obejmują „Global Win32” - co wymaga uruchomienia go w trybie administratora.Podczas debugowania w programie Visual Studio wyświetl okno „Wyjście” (Widok-> Dane wyjściowe). Tam się pokaże.
źródło
Komunikaty diagnostyczne są wyświetlane w oknie danych wyjściowych.
źródło
Kiedy piszę debug.write ("") w kodzie, wyświetla on w "oknie bezpośrednim", a nie "oknie wyjściowym".
Możesz tego spróbować. Do wyświetlania okna „Natychmiastowe” ( Debuguj → Okno → Natychmiastowe ).
źródło
Rozwiązanie dla mojego przypadku to:
źródło
W przypadku VB.NET obowiązują następujące zasady. Musisz wybrać „Debuguj” ORAZ upewnić się, że „Rozpocznij debugowanie”. Można to osiągnąć, naciskając F5.
Również Console.WriteLine będzie wyświetlać komunikaty tylko podczas budowania jako „Release” w oknie Output.
Jak wspomniano wcześniej, otwórz okno Wyjście za pomocą Widok → Wyjście ORAZ upewnij się, że wybrałeś „Kompiluj”, jeśli chcesz zobaczyć komunikaty Console.WriteLine lub „Debuguj”, jeśli chcesz zobaczyć komunikaty Debug.WriteLine lub Trace.WriteLine.
źródło