Programing/C++

C++ Assert를 이용한 프로그램 디버깅

live2skull 2016. 8. 2. 17:06
Assert 함수 이용
#include <stdio.h> 
// #define NDEBUG 
#include <cassert>

int main()
{
	int val, test;
	val = 3;
	test = 5;

	assert(val == test);
	print("passed assert");
}
프로그램을 개발하거나, 테스트 할 때, assert 함수에 전달된 인자값의 expression이 1(true)가 아니라면,
경고와 함께 프로그램의 실행을 중지하고, 메모리 코어 덤프를 생성한 다음(시스템이나 설정에 따라 다름),
프로그램에서 에러가 난 소스 코드의 라인을 다음과 같이 표시해 준다.

또한 최종적으로 개발 완료 후 프로그램을 배포할 때, 더이상 assert문이 필요 없을때 일일히 함수 코드를 지울 필요 없이,
"#define NDEBUG"로 assert를 호출하는 코드를 제외하고 컴파일 해줄 수 있다.

Visual C++ 컴파일러 환경에서는 cassert를,
gcc (*nix) 컴파일러 환경에서는 assert.h 를 include해서 사용하면 된다.