2010-02-01 2 views
3

저는 디버거 모드 (현재 컨텍스트의 변수 값)에있을 때 지역 정보 창과 비슷한 정보를 얻으려는 VSPackage를 가지고 있습니다.Visual Studio 패키지 - 지역 창에서 정보를 얻으려면 어떻게해야합니까?

저는 DTE.Debugger.CurrentStackFrame 인스턴스를 실험 해 왔습니다.이 인스턴스는 Argument 및 Local 컬렉션의 표현을 노출했기 때문에 흥미롭게 보입니다. 그러나 표현식의 값을 객체로 가져 오는 방법을 알 수 없습니다. Value 속성은 ToString 값인 것처럼 보입니다.

답변

5

값을 오브젝트로 사용할 수 없습니다. 주로 VS 패키지와 동일한 프로세스에 값이 존재하지 않기 때문입니다. 그것은 debugee 프로세스에 존재합니다. Visual Studio 디버거는 CLR API를 통해 값을 조작해야합니다. 가장 좋은 방법은 VS 패키지의 문자열 값을 얻는 것입니다.

+0

디버거가이 정보를 노출하지 않습니까? 다양한 디버깅보기가 상호 작용하는 중앙 저장소 (예 : 지역,보기, 직접 실행 창, 코드의 변수 위에 마우스를 올려 놓을 때)를 기대했습니다. 또한 언급 한 CLR API에 대해 자세히 설명 할 수 있습니까? –

+1

@Alan, Visual Studio 디버거는이 정보의보기를 표시하지만 기본 데이터는 표시하지 않습니다. VS 디버거 자체는 실제로 이러한 값이 무엇인지 알지 못하고 대신 언어 특정 표현식 평가 기 (EE)를 사용하여 실제 디버거 프로세스와 대화합니다. 기본적으로 VS는 각 EE에게 IDebugProperty 개체로 반환되는 현재 지역 집합을 제공하도록 요청합니다. VS 디버거는이 인터페이스를 사용하여 값을 검사 할 수 있지만 실제로 디버거 객체를 가져 오지는 않습니다. CLR API는 ICorDebug API입니다. – JaredPar

+0

Jared에 대한 자세한 응답을 보내 주셔서 감사합니다. 도와 주셔서 감사합니다. –

0

Visual Studio Visualizer를 사용하여 실제 개체에 액세스 할 수 있습니다. 정보는 here입니다.

+1

또는 Visualizer 샘플은 http://www.codeproject.com/KB/trace/ImageVisualizer.aspx에서 찾을 수 있습니다. –