2010-06-22 5 views
3

최근에 Visual Studio 2010을 사용하도록 전환했습니다. STL 유형의 DataTips (디버거 도구 설명)가 제대로로드되지 않는 문제가 있습니다. 예를 들어Visual C++/CLI 어셈블리의 Visual Studio 2010 데이터 팁 문제

, 다음 코드 :

int test(const std::string& inString) 
{ 
    std::string aString("Hello, World!"); 

    return aString.compare(inString); 
} 

내가 예상 툴팁하지 않는 | [("안녕, 세계"[+] aString을)를 대신 같은 것을 얻을 + ] aString | {npos = 4294967295}.

Ex. alt text http://bordeaugrove.com/wrong.png

나는 약간의 것들을 테스트 해본 결과 내 기본 (관리되지 않는) 프로젝트에서 문제가 발생하지 않는다는 것을 알게되었습니다. 이 문제가 발생하는 프로젝트는 혼합 된 기본 C++/CLI DLL입니다.

Intellisense는 Visual Studio 2010의 C++/CLI에서 지원되지 않지만 알고있는 한 디버거에서 작동해야합니다.

내가 방금 손상된 설치 또는 잘못된 설정을 어딘가에 가지고 있는지 궁금합니다.

아무도 제안 사항이 없습니까?

+0

최적화 된 빌드입니까? 나는 네이티브 코드의 릴리즈 빌드에서'std :: vector'와 같은 표준 라이브러리 컨테이너의 디스플레이가 완전히 틀린 같은 종류의 문제를 보았습니다. 디버그 (최적화가 비활성화 된) 빌드는 항상 괜찮습니다. 비주얼 라이저는 특정 레이아웃을 가정하거나 조건부로 정의되고 디버그 빌드에만 존재하는 일부 필드를 사용합니다. –

답변

0

의견의 첫 번째 커플 here에 따르면 C++/CLI는 VS2010 intellisense에서 지원하지 않습니다. 두 번째 의견은 MS 팀원이 말하며이를 위해 합리화를 제공합니다.

+0

디버거 통찰력이 아닙니다 * intellisense * –

0

"std-string-content-not-shown-in-the-debugger"에 따르면 VS 2005 및 VS 2010으로 작성된 라이브러리를 혼합하여 발생합니다. 그러나 여러 원인이있을 수 있습니다.

하나의 잠재적 인 해결 방법은 시계 창에서 다음 또는 사용하여 message 이들 변수는 STL 소스를 검색하여 중 하나를 찾을 수있는 std::string

message._Bx._Ptr // use when the string is longer than 16 characters 
message._Bx._Buf // use when the string is less than or equal to 16 characters 

입니다 시계 창에 다음을 추가하는 것입니다

message,! 

부서에서보다 : message가 어떤 데이터 유형보기 사용자 지정을 원시 포맷으로 객체를 탐색 할 수있는 무시 std::string 인 객체를 확대 h 및 기타 조사 식 형식 지정자에 대한 설명은 Format Specifiers in C++에서 확인할 수 있습니다.