Пакет Visual Studio. Как я могу получить информацию в окне местных жителей?

У меня есть пакет VSPackage, и я хотел бы получить информацию, аналогичную той, которая отображается в окне локальных переменных в режиме отладки (значения переменных для текущего контекста).

Я экспериментировал с экземпляром DTE.Debugger.CurrentStackFrame, который выглядел интересно, потому что открывал наборы выражений Argument и Local. Однако я не вижу способа получить значение выражения как объекта — свойство Value кажется значением ToString.


person Alan Spark    schedule 01.02.2010    source источник


Ответы (2)


Невозможно получить значение как объект. В основном потому, что значение не существует в том же процессе, что и ваш пакет VS. Он существует в отлаживаемом процессе. Отладчик Visual Studio должен пройти через CLR API, чтобы манипулировать значением. Лучшее, что вы можете сделать, это получить строковое значение из пакета VS.

person JaredPar    schedule 01.02.2010
comment
Разве отладчик не предоставляет эту информацию? Я ожидал центральное хранилище, с которым взаимодействуют различные представления отладки (т. е. окна Locals, Watch, Immediate и при наведении курсора на переменные в коде). Кроме того, можете ли вы подробнее рассказать об упомянутых вами API-интерфейсах CLR? - person Alan Spark; 02.02.2010
comment
@Alan, отладчик Visual Studio предоставляет представление этой информации, но не базовых данных. Сам отладчик VS на самом деле не знает, что представляют собой эти значения, и вместо этого полагается на оценщики выражений для конкретного языка (EE), чтобы общаться с фактическим отлаживаемым процессом. По сути, VS запрашивает у каждого EE текущий набор локальных переменных, которые возвращаются как объекты IDebugProperty. Отладчик VS может использовать этот интерфейс для проверки значений, но на самом деле он никогда не возвращает необработанный объект отладчика. API-интерфейсы CLR — это API-интерфейсы ICorDebug. - person JaredPar; 02.02.2010
comment
Спасибо за подробный ответ, Джаред. Я ценю вашу помощь. - person Alan Spark; 03.02.2010

Вы можете получить доступ к реальным объектам с помощью визуализатора Visual Studio. Информацию можно найти здесь.

person Eric    schedule 19.08.2011
comment
Или образец визуализаторов можно найти по адресу: codeproject.com/KB/trace/ImageVisualizer. aspx - person Jeremy Thompson; 19.10.2011