9
votes

Visual Studio 2008 Fenêtre de débogage pour afficher l'horodatage?

Je veux pouvoir voir un horodatage au début de chaque trace de la fenêtre de débogage dans Visual Studio.

 [Time stamp here] The thread 'Win32 Thread' (0xcd0) has exited with code 0 (0x0).

 [Time stamp here] => CLR ProvideAssembly: AppDomainId: 1, Ref: 'msvcm90d...


0 commentaires

4 Réponses :


7
votes

Étant donné que le texte de la fenêtre de sortie est en lecture seule une fois écrits, il n'y a pas de moyen facile de faire exactement ce que vous voulez faire. Cependant, il est facile de faire quelque chose de similaire: appendez une ligne d'horodatage après le nouveau texte est écrit dans la fenêtre de sortie. Cela rendra la fenêtre de sortie beaucoup plus salissante, mais vous obtiendrez vos timings.

Voici comment cela fonctionnerait: Créez d'abord un complément Visual Studio ou une macro qui gère le PaneUpdated Evénement du volet actif de la fenêtre Outlook. (Voir Ce fil pour comment faire cela avec une approche macro). Assurez-vous de vérifier, dans le gestionnaire d'événements, que pique.name == "débogage" et ignore d'autres vitres. Deuxièmement, lorsque vous détectez le nouveau texte dans le volet de sortie de débogage, appendez une ligne d'horodatage, comme celle-ci: xxx

Il est également possible de pré-attendre un horodatage à chaque ligne, mais C'est beaucoup plus fort. Vous ne pouvez pas modifier le texte déjà dans la fenêtre de sortie (c'est en lecture seule), mais vous pouvez effacer la fenêtre et vous pouvez ajouter du texte. Afin que vous puissiez utiliser la même approche du gestionnaire d'événements ci-dessus pour détecter les modifications de texte, mais au lieu d'ajouter que vous pouvez copier le texte actuel, préparer des horodatages à toutes les lignes ne disposant pas d'horodatages déjà, effacez la fenêtre et ajoutez-la maintenant. -with-horh-terme texte. Le problème avec cela est la performance une fois que votre fenêtre de sortie devient grande. Donc, vous devrez probablement utiliser une sorte de «estampage paresseux» qui fait clairement et insérer en arrière-plan, afin d'éviter de tuer votre IDE lorsque (comme indiqué) 100 des lignes de sortie de débogage sont émises en peu de temps. . De plus, lorsque vous clarifiez et ré-ajoutez, si vous sélectionnez actuellement du texte dans la fenêtre de sortie, votre sélection est perdue.

Personnellement, je ferais simplement la chose facile et appendez des lignes d'horodatage plutôt que de l'approche plus difficile de pré-attente. Depuis que des trucs à la fin de la ligne sont difficiles à voir sans défilement, je m'assurerais probablement qu'il y avait une nouvelle ligne avant l'horodatage, l'utilisateur verrait donc chaque lot d'une ou plusieurs lignes de sortie suivies d'une ligne d'horodatage.

Il est possible qu'il puisse y avoir un moyen de crocher la fenêtre de sortie avant l'affichage du texte, mais je ne pouvais trouver aucun point d'extensibilité de ce type dans les API d'extensibilité de VS.

Une autre idée: vous pouvez toujours rouler votre propre fenêtre d'outils, par exemple. "Sortie de débogage d'Ivan" qui écoute les événements provenant de la fenêtre de sortie réelle et échelle de nouvelles lignes (avec horodatage) à votre propre fenêtre d'outils. C'est probablement l'option la plus difficile, mais devrait faire exactement ce que vous voulez.


5 commentaires

@Justin Je regardais aussi cette extensibilité. La fin de la ligne n'est pas très agréable, car les lignes ont des longueurs différentes et c'est très difficile à lire. La repeinte de la fenêtre est un tueur comme vous dites ... Merci de votre réponse, mais je cherche vraiment à trouver comment faire cela, même si son piratage piraté.


Oui, au lieu de fin de ligne, si vous allez avec une solution à l'annexe seulement, je suggère de planter l'horodatage sur une nouvelle ligne-- Ceci double le nombre de lignes de la fenêtre de sortie, mais c'est mieux (IMHO) que Avoir des horodatages enterrés au bout de la ligne. De plus, il peut même pas être possible de planter le texte en fin de ligne, si les nouvelles lignes sont déjà émises dans le document avant d'obtenir le contrôle.


Une autre idée: vous pouvez toujours rouler votre propre fenêtre d'outils, par ex. "Sortie de débogage d'Ivan" qui écoute les événements provenant de la fenêtre de sortie réelle et échelle de nouvelles lignes (avec horodatage) à votre propre fenêtre d'outils. C'est probablement l'option la plus difficile, mais devrait faire exactement ce que vous voulez.


@Justin Bonne idée. Je vais essayer de voir ce qui sort.


@Justine une note rapide avant que j'accepte votre réponse. Vous êtes correct, le seul moyen possible de gérer cela consiste à créer une autre fenêtre, laquelle surveiller les modifications du volet de sortie. Je l'ai fait et j'ai travaillé, bien que je déteste la solution, c'est la seule chose que je puisse faire pour le moment. Merci pour les suggestions et les informations.



2
votes

Je cherchais la même fonctionnalité. Collègue de la mine est venu avec le $ Cocher Macro dans le champ Message, imprimant les tiques CPU 'actuelles'.

Jetez un coup d'œil à Ces conseils de Simon Chapman , aussi.


0 commentaires

3
votes

Pour ajouter une nouvelle réponse à une question antique antique, il y a une fonctionnalité dans le productivité outils d'alimentation 2013 et Productivité Outils d'alimentation 2015 Extension qui ajoutez une marge d'horodatage à la fenêtre de sortie, aucun code requis.


2 commentaires

Il y a maintenant un Extension autonome pour VS2017


L'extension 2017 est une belle addition. Malheureusement, il n'imprime pas les horodatages lors de la compilation, ce que j'espérais. La compilation du code UWP est douloureuse sur ma configuration.



0
votes

Je voulais aussi cette fonctionnalité, alors éventuellement, j'ai écrit une extension pour le faire (un peu comme Justin Grant suggéré dans la réponse acceptée). Après l'avoir utilisé pendant un moment, j'ai décidé que des horodats relativement étaient encore plus utiles pour moi lors du débogage. Si les gens souhaitaient des horodatages absolus, je suis sûr que je pouvais ajouter cette fonctionnalité dans. En tout cas, si vous êtes intéressé, vous pouvez vérifier à NiahtextFilter.com .

et pour montrer les horodatages relatifs en action dans une session Visual Studio Debug: Sortie de débogage du filtre texte Niah


0 commentaires