[t:/]$ 지식_

sig abort(SIGABRT)의 사용

2016/10/31

SIGABRT는 비정상적인 프로그램 종료(주로 세그폴트 등, 메모리 접근 위반)에서 발생하는 시그널이다. 디버거를 만들거나 할 것도 아니고 얘를 뭐 쓸 일이 있나 싶지만 테스트 시나리오 개발시에는 쓴다. 즉, 테스트 코드가 시나리오 대로 한 턴 쭉~ 돌아야 하는 상황이다. 그런데 잘못된 코드에 의해서 sig abort가 발생하고 프로그램이 죽어버리면 그 이후의 테스트는 진행되지 않는다. 따라서 이 시그널을 우회시키고 (막아버리고) 테스트를 진행해야 맥주가 시원해진다. 코어덤프 메커니즘 같은 프로그램 죽기전 상황을 기록하는 무언가를 만드려면 이용할 수 있겠다.

오늘의 리빙포인트 : 테스트 도중 프로그램이 죽지 않게 하려면 시그널을 막는다.

에.. 논외로...

나는 테스트를 작성하는 개발자이지만 아직 자동화 테스트 툴을 사용하는 개발자는 아니다.. -.-;;

struct sigaction old_action;
struct sigaction action = { .sa_handler = SIG_IGN, .sa_flags = 0};

sigaction(SIGABRT, &action, &old_action);








[t:/] is not "technology - root". dawnsea, rss