급히 프로그램을 만들어 내용을 수정해서 다시 올립니다.
혹 이전꺼 받으신 분은 이걸 받으셔야 합니다. -..-;
-----------------------------------------------
문득, TRACE 창을 보고 있노라니 메시지가 표시되는 소스의 줄번호와 함수명과 소스파일명이
같이 찍히게 하면 어떨까라는 생각이 들더군요.
그 동안 C++빌더 뿐만 아니라 VC++에서도 자동으로 이 정보가 찍히게 하질 않았는데
생각이상 편리할 것 같아 궁리하다가 결국 간단한 매크로로 해결을 했습니다.
첨부한 소스를
#include "Trace.h"
로 포함하시고
TraceWindow.exe는 실행시켜 놓고,
소스에 추적하고 싶은 곳에 디버깅 정보를 기재하면 됩니다.
void TTest::IamFunc(int value)
{
TRACE("난 함수다. 인자값은 : %d", value); // 이 줄이 151번 라인이라면
}
이런 식으로 TRACE 라인을 넣으면 됩니다.
이때 물론 Trace.cpp 는 프로젝트에 추가해야 겠지요.
결과는
/////////
난 함수다. 인자값은: 100 (151 TTest::IamFunc - D:\....\TTest.cpp)
/////////
이렇게 찍힙니다.
나중에 릴리즈 할때 이 TRACE 라인을 지울 필요는 없습니다.
릴리즈모드로 컴파일하거나
#include "Trace.h"
이전에
#define TRACE_OFF
또는
#define DEBUG_OFF
라고 선언해주기만 하면 됩니다.
또는 프로젝트->Options->Directory...->Conditionals 에 넣어주어도 됩니다.
그러면 실행화일에서는 디버깅 정보가 100% 사라지게 됩니다.
제가 사용하는 Trace 소스와 TraceWindow 디버깅 창 프로그램을 같이 올립니다.
어떻게 소스 라인 정보를 찍는지는 소스를 보시면 됩니다.
Trace.h 에
void SETTRACE(int line, char *func, char *file); // 소스라인,함수명,소스명 표시를 위한 저장용.
void TRACE2(char * szFormat, ...); // TracePlus 창에 표시
void DEBUG(char * szFormat, ...); // EventLog 창에 표시.
#define TRACE SETTRACE(__LINE__, __FUNC__, __FILE__); TRACE2
가 있는데
TRACE 매크로가 현재 라인번호와 함수명과 파일명을 전달하는 역할을 합니다.
간단한 트릭이죠.
TraceWindow는 기존 사용하던 Trace 창이 불편해서 C++ 디버깅에 편리하도록
급히 제작했습니다. 그래서 꼭 필요한 기능 외에는 없습니다.
Trace.cpp 의 include 는 사실
#include <vcl.h>
하나만 있어도 됩니다.
VC++사용자도 수정없이 사용할수 있도록 그렇게 해 놓은 겁니다.
그럼 즐거운 플밍하시기를...
|
if문에서 TRACE 할경우 { } 반드시 대괄호를 해주야함
if ( 조건 ) TRACT(...)
하면 로그가 찍히지 않습니다.
그럼..