Peut-on afficher la sortie de OutputDebugString dans la fenêtre de sortie de Visual Studio?

Je suis à l'aide de C# et Visual Studio; 2010.

Lorsque j'utilise OutputDebugString d'écrire les informations de débogage, doit-elle apparaître dans la fenêtre de sortie?

Je peux voir la sortie de OutputDebugString dans DebugViewmais j'ai pensé que je voudrais le voir dans Visual Studio de la fenêtre de Sortie. J'ai regardé
dans le menu Outils ? Options ? De débogage ? Général, et la sortie n'est PAS redirigé vers la fenêtre. J'ai aussi regardé dans le menu Outils* ? Options ? De débogage ? Fenêtre de sortie et tous les Paramètres de Sortie sont réglés sur "On". Enfin, j'ai utilisé la liste déroulante dans la fenêtre de Sortie de préciser que les messages de Débogage doit apparaître.

Si je change de menu Outils* ? Options ? De débogage ? Général de rediriger la sortie dans la fenêtre exécution, le OutputDebugString messages ne s'affichent pas dans la fenêtre exécution.

Ici est l'ensemble de mon programme de test:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Diagnostics;

namespace OutputDebugString
{
  class Program
  {
    [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main(string[] args)
    {
      Console.WriteLine("Main - Enter - Console.WriteLine");
      Debug.WriteLine("Main - Enter - Debug.WriteLine");
      OutputDebugString("Main - Enter - OutputDebugString");
      OutputDebugString("Main - Exit - OutputDebugString");
      Debug.WriteLine("Main - Exit - Debug.WriteLine");
      Console.WriteLine("Main - Exit - Console.WriteLine");
    }
  }
}

Si je suis dans le débogueur, le Debug.WriteLine de sortie apparaît dans la fenêtre de sortie, mais la OutputDebugString de sortie n'a pas.

Si je lance à partir d'une fenêtre de la console, à la fois Debug.WriteLine et OutputDebugString apparaître dans DebugView.

Pourquoi ne pas le OutputDebugString sortie jamais apparaître dans la fenêtre de sortie?

En fin de compte, mon intention n'est pas d'écrire beaucoup de la sortie de débogage avec OutputDebugStringje parlerai plutôt d'utiliser le Système.Diagnostics ou NLog ou quelque chose de similaire. Je suis juste essayer pour savoir, si je configurer une plateforme d'enregistrement d'écrire à OutputDebugStringla sortie sera visible à partir du débogueur.

Je suis retourné à mon programme original (pas le simple test ci-dessus) qui utilise TraceSources et TraceListeners configuré via le app.config fichier. Si je configurer la trace des sources d'écrire à la System.Diagnostics.DefaultTraceListener (qui est documenté comme écrit à OutputDebugString), puis la trace de sortie de la source NE accédez à la fenêtre de débogage. Toutefois, les lignes qui écrivent directement avec OutputDebugString (comme dans mon exemple simple) NE PAS aller à la fenêtre de débogage. Aussi, si j'utilise un autre TraceListener qui écrit à OutputDebugString (je suis un de Ukadc.Diagnostics sur Codeplex), que la production NE va PAS à la fenêtre de débogage.

Une remarque à propos de l'Ukadc.Diagnostics écouteur de trace... Ukadc.Diagnostics contient quelques traces d'auditeurs qui permettent une mise en forme personnalisée de sortie (similaire à la mise en forme qui sont disponibles en log4net, NLog, et de LABORATOIRE). Ainsi, avec "seulement" une dépendance sur Ukadc.Les Diagnostics que l'on peut utiliser "standard" .NET la journalisation des diagnostics, mais je peux obtenir certaines fonctionnalités avancées (comme la sortie de mise en forme) sans devenir dépendant d'un peut-être beaucoup plus grande plate-forme. Dans ce cas, je pourrais utiliser le Ukadc.Diagnostics OutputDebugStringTraceListener d'écrire la sortie d'enregistrement dans la fenêtre de débogage dans le même format (si vous le souhaitez, ou un autre format), comme il le serait si elle était écrite dans un fichier.

Noter que j'ai vu ces questions, mais elles ne fournissent pas une solution de travail:

Ici et ici

source d'informationauteur wageoghe