2010-08-25 15 views
16

Lorsque vous travaillez avec des systèmes tiers, en particulier des systèmes très configurables qui chargent dynamiquement les fournisseurs, les contrôleurs, les composants et ainsi de suite, je veux parfois juste savoir quand un objet ou d'une classe est accédé. Normalement, je place un point d'arrêt sur toutes les lignes potentielles dans ma source (une nuisance, mais il fonctionne), mais si la source ne sont pas disponibles:Comment puis-je mettre un point d'arrêt sur tous les accès à une classe

Comment puis-je instruis Visual Studio 2010 Ultimate pour briser tous les et chaque accès à une classe donnée?

Note: pour autant que mon expérience va, ce n'est pas généralement possible, mais je voudrais le voir confirmé

Répondre

7

Vous pouvez cliquer sur Debug> Nouveau point d'arrêt> Point d'arrêt à fonction. Ctrl-B vous y amène directement. Cela vous permettra de casser une fonction spécifique. Pendant le débogage, vous pouvez voir dans la fenêtre Breakpoints si la méthode est trouvée et sera frappée (icône ronde rouge) ou non (blanche avec l'icône du cercle, comme du point d'arrêt désactivé), comme avec les points d'arrêt normaux.

+1

Merci, c'est pratique pour une seule méthode, en effet, même si elle ISN pas chargé. Mais cela ne m'aide pas à chaque accès à une classe, et je ne semble pas pouvoir définir un point d'arrêt de cette façon pour le 'ctor' ou le' cctor' (mais peut-être que j'ai besoin d'expérimenter plus). – Abel

+2

@Abel: Essayez 'Namespace.ClassName.ClassName'. – SLaks

+0

Je ne peux pas obtenir ça pour tous les types et méthodes, mais j'ai juste décidé d'acheter Reflector Professional (utilisé l'édition gratuite depuis longtemps) et cela me permet de déboguer et de définir des points d'arrêt sur le code reflété . – Abel

1

À un moment donné (pré VS2008) vous pouvez définir un point d'arrêt à chaque ligne dans un fichier par sélectionner (ctrl-a) sur Confirme point d'arrêt (F9).

Pour définir un seul sur l'entrée de chaque méthode prend, si je me souviens bien, une macro. Consultez le blog de John Robbins comme source possible: http://www.wintellect.com/CS/blogs/jrobbins/

[EDIT: ctrl-A, F9 ne fonctionne pas en 2010 ou 2008, il doit donc être une version antérieure je me souviens de]

+0

Frapper F9 avec plusieurs lignes sélectionnées ne définit qu'un point d'arrêt sur la ligne en cours. Mais votre suggestion pour faire un macr est bonne. – Abel

+0

@Abel: .. et efface tous les autres points d'arrêt déjà dans le code sélectionné. C'est un changement depuis une version antérieure (ça ne marche pas en 2008, alors peut-être que je me souviens de 2005?). Je vais mettre à jour la réponse. – Richard

+0

Merci. Et j'utilise 2010 et ne peux vraiment pas m'en souvenir des éditions précédentes, mais là encore, il y a toujours des fonctionnalités que vous ne découvrez pas avant la sortie d'une prochaine édition. – Abel

1

I juste fait un addin Visual Studio 2010 pour cela. Vérifiez ceci: http://weblogs.asp.net/uruit/archive/2011/08/04/visual-studio-2010-addin-setting-a-class-breakpoint.aspx

Mise à jour

Ce projet vit maintenant Github. N'hésitez pas à contribuer.

+0

Intrigant, merci pour le conseil, je vais jeter un oeil! – Abel

+0

Ça ne marche pas pour moi. Add-in Manager répertorie "BreakAll" mais il n'y a aucun nouvel élément de menu dans le menu de débogage. Ctrl + D, Z (comme indiqué dans la capture d'écran) ne fonctionne pas non plus. – Qwertie

+0

@Qwertie Vérifiez le repo Github pour la dernière version du projet. Il y a également une liste de problèmes connus que vous pouvez consulter. – alf

10

Pas le plus élégant, mais si vous Ctrl + Fpublic vous pouvez spammer entre F9 [set point d'arrêt] puis F3 [trouver suivante] pour définir un point d'arrêt sur tous les points d'entrée publique dans la classe.

Vous pouvez également ajouter des points d'arrêt pour protected et internal points d'entrée, et toutes les implémentations d'interface explicite (déclarations qui ne sont pas public)

+0

Bon tour :) @carlwalsh – Divya