디버그 Tip-추적점

추적점-중단점에 도달했을 때 고유한 동작

많은 사람이 모르는 디버그기능이 추적점을 사용하는 것입니다. 추적점이란, 중단점에 도달 했을 때 트리거되는 몇가지 독자적인 동작을 가지는 중단점입니다. 이 기능은, 디버거로 브레이크인 하지 않고 응용프로그램 안의 동작을 확인 하고 싶을 때에 특히 편리합니다.

ex) 함수부분에 추적점을 걸면
함수 호출할때마다 출력창에 표시가 된다. 


해당 소스코드 라인 에서 오른족 버튼 클릭 -> 중단점 -> 추적점

OutputDebugString 을 편하게 쓰기 위한 것 이라고 보면 될듯한다..

 

출력하고 싶은변수 

변수는 {} 안에서다가 입력 

메시지는 그냥.. 입력하면 된다..

  

TRACE() 매크로?
 -> 
 매개변수로 지정한 문자열을 VS의 디버그 윈도우에 출력해준다.

 

프로그램의 OnLButtonDown()에 다음과 같이 TRACE() 매크로를 사용하면

void CAppWizardView::OnLButtonDown(UINT nFlags, CPoint point)
{
    TRACE(TEXT("Mouse position : %d, %d\n"), point.x, point.y);
}

디버그 시에 출력창에 아래와 같이 지정한 문자열이 출력된다.

 

 

TRACE() 메크로는 디버그 모드에서만 동작하며, 릴리즈 모드에서는 매크로가 확장되지 않아 소스 파일에 TRACE()와 관련된 그 어떤 코드도 포함되지 않는다.

 

위의 예제와 같은 TRACE(exp)의 형식으로 사용할 수도 있고, 아래와 같이  MFC Trace flag와 Tracing level을 지정해서 사용할 수도 있다.
TRACE(DWORD category, UINT level, LPCSTR lpszFormat, ... )

 

TRACE() 매크로와 동일한 기능을 하는 다음과 같은 매크로도 있다. TRACE()와 비교해 사용하는 매개변수에 차이가 있다.

 

TRACE0(exp) : 하나의 문자열만을 사용한다.

TRACE1(exp, param1) : 하나의 형식 문자열(formatted string)과 파라미터를 사용한다.

TRACE2(exp, param1, param2) : 하나의 형식 문자열과 두개의 파라미터를 사용한다.

TRACE3(exp, param1, param2, param3) : 하나의 형식 문자열과 세개의 파라미터를 사용한다.

[출처] VS 추적점 걸기|작성자 핵이

이 글을 공유하기

댓글

Designed by JB FACTORY