web-dev-qa-db-fra.com

Où la sortie System.Diagnostics.Debug.Write apparaît-elle?

Le programme C # suivant (construit avec csc hello.cs) imprime seulement Hello via Console! sur la console et Hello via OutputDebugString dans la fenêtre DebugView. Cependant, je ne peux voir aucun des System.Diagnostics.* appels. Pourquoi donc?

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" );
    }
}

Existe-t-il des commutateurs spéciaux de ligne de commande nécessaires pour csc?

Je n'utilise Visual Studio pour aucun de mes développements, il s'agit uniquement de commandes en ligne de commande.

136
Frerich Raabe

Comme d'autres l'ont fait remarquer, les auditeurs doivent être enregistrés pour pouvoir lire ces flux. Notez également que Debug.Write ne fonctionnera que si l’indicateur DEBUG build est défini, alors que Trace.Write _ ne fonctionnera que si l’indicateur TRACE build est défini.

La définition des indicateurs DEBUG et/ou TRACE s'effectue facilement dans les propriétés du projet dans Visual Studio ou en fournissant les arguments suivants à csc.exe.

/define:DEBUG;TRACE

72
Tormod Fjeldskår

Pendant le débogage System.Diagnostics.Debug.WriteLine apparaîtra dans la fenêtre de sortie (Ctrl+Alt+O), vous pouvez aussi ajouter un TraceListener au Debug.Listeners collection pour spécifier Debug.WriteLine appels pour émettre dans une autre destination.

Remarque: Debug.WriteLine les appels peuvent ne pas s'afficher dans la fenêtre de sortie si l'option "Rediriger tout le texte de la fenêtre de sortie vers la fenêtre Immédiate" de Visual Studio est cochée dans le menu OutilsOptionsDébogageGénéral. Pour afficher "OutilsOptionsDébogage", cochez la case en regard de "Outils --- OptionsAfficher tous les paramètres ".

107
boardernin

Vous devez ajouter un TraceListener pour les voir apparaître sur la console.

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

Ils apparaissent également dans la fenêtre de sortie de Visual Studio en mode débogage.

41
jason

Pendant le débogage dans Visual Studio, affichez la fenêtre "Sortie" (Affichage-> Sortie). Il montrera là.

9
Pat
5
Andreas Grech

Quand j'écris debug.write ("") dans le code, il sort dans la "fenêtre immédiate", pas "fenêtre de sortie".

Tu peux l'essayer. Pour afficher la fenêtre "Immediate" (DebugWindowImmediate).

3
kykbr

La solution à mon cas est la suivante:

  1. Cliquez avec le bouton droit sur la fenêtre de sortie.
  2. Vérifiez la sortie du programme
2
Ning Zhu

Pour VB.NET, ce qui suit s’applique. Vous devez sélectionner "Debug" ET assurez-vous que vous "Démarrer le débogage". Ceci peut être atteint en appuyant sur F5.

De plus, Console.WriteLine n’affichera que les messages lors de la création en tant que "Release" dans votre fenêtre de sortie.

Comme mentionné précédemment, ouvrez la fenêtre de sortie avec ViewOutput ET assurez-vous de sélectionner "Construire" si vous souhaitez voir les messages Console.WriteLine ou "Déboguer" si vous le souhaitez. veux voir les messages Debug.WriteLine ou Trace.WriteLine.

0
Matthis Kohli