-
[C/C++] 간단한 디버깅용 매크로 정의 (줄번호, 함수명, 파일명 기본 표시)개발 이야기 2019. 2. 15. 15:11
C나 C++로 간단한 프로그램 짤 때, 줄 번호와 함수명을 기본으로 포함시키기 위해 쓰던 간단한 디버그 스크립트 입니다.
전처리문으로 DBG라는 것을 아래와 같이 정의하고, 인자로는 printf와 같은 format string을 넣으면 됩니다.
#define DBG(format,args...) \
printf("%d %s() :" format "\n", __LINE__, __FUNCTION__, ## args)
위와 같이 하고 함수 내에서 아래와 같이 사용합니다.
int main()
{
// Debug trace with only line number and function name
DBG("");
int num = 3;
// Debug trace with string
DBG("num is %d", num);
return 0;
}
위의 코드를 실행하면 아래와 같이 줄 번호와 함수명까지 나오는 것을 확인할 수 있습니다.10 main() :
14 main() :num is 3
조금 더 응용해서, 파일명까지 포함되도록 하기 위해서는 각 파일을 컴파일 할 때 __FILENAME__을 자동으로 정의하도록 Makefile을 조금 수정해 주어야 합니다.먼저, Makefile에 아래와 같은 구문을 추가해 줍니다.CFLAGS+= -D__FILENAME__=\"$(notdir $(abspath $<))\"
그리고 아래와 DBG 정의를 아래와 같이 수정하면, 디버그 문에 파일 이름까지 나오도록 할 수 있습니다.#define DBG(format,args...) \
printf("%s:%d %s() :" format "\n", __FILENAME__, __LINE__, __FUNCTION__, ## args)
반응형'개발 이야기' 카테고리의 다른 글
라즈베리파이 자동 로그인 유저 변경 (0) 2020.04.15 Mac OS Catalina (10.15.3)에 Tensorflow 설치하기 (0) 2020.01.31 [Mac] 페럴럴즈의 윈도우10에서 CapsLock으로 한영전환 하기 (autohotkey) (0) 2020.01.31 [아두이노/Home assistant] 집 전기 사용량 실시간 측정기 간단 제작기 (3) 2020.01.12