2010-02-01 3 views
3

J'ai un VSPackage que je voudrais obtenir des informations similaires à celles montrées dans la fenêtre locale en mode débogage (les valeurs de variables pour le contexte actuel).Visual Studio Package - Comment puis-je obtenir les informations dans la fenêtre Locals?

J'ai expérimenté l'instance DTE.Debugger.CurrentStackFrame qui semblait intéressante car elle exposait des collections d'expressions Argument et Local. Cependant, je ne vois pas comment obtenir la valeur d'une expression en tant qu'objet - la propriété Value semble être la valeur ToString.

Répondre

5

Il n'est pas possible d'obtenir la valeur de la valeur en tant qu'objet. Principalement parce que la valeur n'existe pas dans le même processus que votre package VS. Il existe dans le processus de débugee. Le débogueur Visual Studio doit passer par l'API CLR pour manipuler la valeur. Le mieux que vous puissiez faire est d'obtenir la valeur de chaîne du paquet VS.

+0

Le débogueur n'expose-t-il pas cette information? Je m'attendais à un magasin central avec lequel les différentes vues de débogage interagissent (c'est-à-dire les Locals, Watch, Immediate et quand survolant des variables dans le code). Aussi, pouvez-vous élaborer sur les API CLR que vous avez mentionnées? –

+1

@Alan, le débogueur Visual Studio expose la vue de cette information mais pas les données sous-jacentes. Le débogueur VS lui-même ne sait pas réellement ce que ces valeurs sont et s'appuie plutôt sur des évaluateurs d'expression spécifiques à la langue (EEs) pour parler avec le processus réel debugee. Essentiellement VS demande à chaque EE de donner l'ensemble actuel de locals qui sont retournés en tant qu'objets IDebugProperty. Le débogueur VS peut utiliser cette interface pour inspecter les valeurs, mais il ne récupère jamais l'objet de débogage brut. Les API CLR sont les API ICorDebug – JaredPar

+0

Merci pour votre réponse détaillée Jared. J'apprécie ton aide. –

0

Vous pouvez accéder à des objets réels à l'aide d'un Visual Studio Visualizer. L'info peut être trouvée here.

+1

Ou un exemple sur Visualizers peut être trouvé à: http://www.codeproject.com/KB/trace/ImageVisualizer.aspx –

Questions connexes