2011-04-10 6 views
0

은 (헤더 파일) 상상 :디버깅 "한 줄"방법

int getInt() { return m_intValue; } 

int getInt() 
{ 
    return m_intValue; 
} 

가 어떻게 m_intValue을보고, 첫 번째 예제를 디버깅 할 수 있습니다? 예제 2에서, 줄 1에 중단 점을 설정하고 F10 (단계 뒤)을 누른 다음 m_intValue에있는 내용 (호버링 후)을 확인하십시오. 또는 BP를 return m_intValue 행에 추가하십시오.

하지만 첫 번째 버전에서 BP를 배치 할 때 디버크 정보가 m_intValue으로 표시되지 않습니다.

이 예제는 단지 예시입니다. 가치가 있음을 알 수 있습니다. 여기서 나는 getInt (반환 값 참조)이라고합니다. 그러나 좀 더 복잡한 경우 (예 : 범위를 벗어나는 값으로 인해 반환 된 값을 반환하는 경우) 처리를 수행 할 때 실제로 m_intValue을보고 싶습니다.

당신은 내 질문을 이해하길 바랍니다.

감사합니다.

+0

gcc에서 -fno-inline 스위치를 사용할 수 있습니다. Microsoft의 컴파일러에서 비슷한 것을 찾으십시오. – ognian

+0

올바르게 이해하면 질문은'inline'과는 아무런 관련이 없지만 디버깅 할 수있는 '시퀀스 포인트'가 모두 같은 소스 행에 있다는 사실과 관련이 있습니다. – ildjarn

+0

@ildjarn : 네 말이 맞아, 나는 제목을 수정했다. – relaxxx

답변

3

잘못된 코드로 설정된 중단 점을 가져옵니다. 함수 입력 지점에서 깨지면 변수가 아직 초기화되지 않습니다. 이러한 접근자를 디버깅하려면 확실히 두 번째 코딩 스타일을 선호하고 싶습니다. 어느 쪽을해서는 안되는가, 그것은 버그가 없다.

정말로 인 경우 첫 번째 스 니펫에 작성된 코드로 개체를 검사 한 다음 디스 어셈블리보기로 전환하고 스택 프레임 설정 코드를지나 한 단계 건너 뛰십시오.