2009-10-19 6 views
1

얼마 전에 디버깅 Windows 프로그램 설명서를 읽었으며 Visual C++ 디버거 (빠른) 조사 식 창에서 함수를 호출하는 방법에 대해 광범위하게 언급 한 트릭 중 하나가있었습니다. 행운을 빕니다. 필자는 사본을 가지고 있지 않으며이 문서에서 찾을 수있는 작은 문서는 실제로 매우 가난합니다.VC++ 디버거에서 클래스 멤버 함수 호출

그래서 조사 식 창에서 멤버 함수를 어떻게 호출합니까? 함수가 DLL에 있으면 어떻게 될까요? 네임 스페이스의 일부인 경우 어떻게해야합니까? 평범하지 않은 매개 변수를 전달할 수 있습니까?

다음 예제를 사용합니다. QList<MyType>의 size() 메서드를 호출하고 싶습니다. 여기서 MyType은 사용자 정의 유형입니다.

감사합니다.

답변

3

매우 효과적입니다. 조사 식 창에서 표현식을 평가하거나 빠른 조사 식 창을 열 수 있습니다 (ctrl-alt-Q - 알기 쉬운 바로 가기). 대부분의 형식의 멤버 함수를 호출 할 수 있습니다. 일반적으로 스마트 포인터로 오버로드 된 연산자가있는 경우에만 일반적으로 실패하는 경향이 있습니다. 오버로딩 된 연산자가없는 간단한 클래스의 경우 제대로 작동해야합니다. 나는 그것이 사소한 매개 변수를 받아 들여야한다고 생각합니다. (명백하게 그것이 얼마나 사소한가에 달려 있습니다!) 값을 반환하는 함수를 호출하는 것뿐만 아니라 객체를 수정하는 함수를 호출 할 수도 있습니다. getter 메소드를 호출하는 데 제약이 없습니다.

기억해야 할 또 다른 종류의 명백한 사실은 모든 변수가 로컬 스택 프레임에서 평가되므로 변수가 현재 스택 지점에서 볼 수 있는지 확인해야한다는 것입니다.

0

Visual Studio에서 코드를 디버깅하는 동안 개체의 메서드를 호출 할 수 있습니까? 왜냐하면 나는 그렇게 할 수 없었기 때문이다. 내가 아는 가장 가까운 디버깅 기능은 객체의 빠른 감시 (스택의 로컬 객체 포함, 호출 스택 탐색) 또는 코드를 변경하고 다시 컴파일하고 디버깅을 계속할 수 있도록 컴파일하고 계속합니다 (VC6에서 사용함). 마지막 문에서 ...

+0

그래, 방금 전화 했어. 클래스 X에서 returnAQString()을 입력하여 X :: returnAQString()을 호출했고 디버거에서 QString을 볼 수 있습니다. – rpg

+0

잘 알고 있습니다 ... 시도해야합니다 :) –

1

I 효과적인 광고 목록에는 QList의 인스턴스입니다 시계 창에()는 list.size 쓰기,하지만이 모든 클래스에 대한 작동 확실하지 않다 말할

+0

스크래치가 작동합니다. "list"라는 QVariant에서 size()를 호출했습니다. :-) – rpg

관련 문제