Programming Language/C,C++

C++ assert() 함수의 용도와 사용 시 참고사항

TwinParadox 2018. 8. 12. 21:48
728x90

void assert(int expression)


조건문이 false면 프로그램을 종료시켜버리며 디버깅에 사용하는 함수.

assert.h에 정의된 매크로 함수로 이를 인클루드하여 사용.

assert의 조건문에서 문제가 발생해서 에러가 발생하면 메세지 박스에 어떤 파일의 어떤 라인에서 문제가 발생했는지 적혀 있어 쉽게 문제가 되는 부분을 찾아낼 수 있음.

assert를 통해 메세지를 받았을 경우, 메세지 박스에서다시 시도 버튼을 누르고 중단 시점의 콜 스택이나 변수 상태를 확인해 원인을 확인할 수 있음.



assert를 이용하는 이유

어떤 에러를 유발할 수 있는 작업이 진행되고 에러가 한참 뒤에서나 발생해서 프로그램에 문제를 일으키면 에러를 유발한 실제 작업을 찾기가 어려워짐. 이런 골치 아픈 일을 방지하기 위해서 에러를 유발할 수 있는 곳에 assert를 이용해 문제를 잡아내는 작업을 실시함.



- assert는 디버거 버전에서만 컴파일되기 때문에 릴리즈 모드에서 실행해야 하는 동작을 작성하지 않아야 함.


- 프로그램을 고장낼 수 있는 조건들에 대해 적용하는 것으로 조건이 달라도 정상적인 처리가 가능한 상황이면 assert를 사용하지 않는 것이 좋음.


- assert에 인자를 작성할 때는 하나의 조건씩 넣는 것이 용이함.

728x90
728x90