본문 바로가기

프로그래밍/API

Linux에서 stack trace 출력

Java로 개발을 해본 개발자라면 프로그램에 문제가 발생되었을때 stack trace가 출력된다는데
상당한 매력을 느낀 개발자가 많을 것이라는 것이다.

이러한 출력이 C/C++에서도 구현이 된다면 얼마나 좋을까 하는 생각을 많이들 해봤을 것이다.

그래서 준비했다.. 즐겨 보시길~

#include <execinfo.h>

void debugTrace( int ndepth)
{
 void  *array[ndepth];
 int    size = backtrace( array, ndepth);
 char **symbols = backtrace_symbols( array, size);

 while ((--size) >= 0)
  fprintf( stderr, " %2.i: %s\n", size + 1, symbols[size]);
}


이 함수를 호출하는 것 만으로 프로그램의 문제 발생시 stack trace가 화면에 출력된다.

그럼 어떻게 사용하느냐?  바로 signal이 발생될때 해당 함수를 호출하기만 하면 된다.

그럼 잘 사용해 보길~