티스토리 뷰

Application 에서 call trace 를 출력하고, 해당 주소를 코드상에서 찾으려면 애플리케이션 compile시에 gcc 옵션으로 -g 를 사용해야 합니다. 그리고 코드상에 call trace를 출력할 수 있도록 __builtin_return_address() 를 사용합니다.

openlog("oops", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog(LOG_DEBUG,"oops : Signal happened (%d)\n", nSignal);
syslog(LOG_DEBUG, "01 -  0x%08x \n", (int)__builtin_return_address(0));
syslog(LOG_DEBUG, "02 -  0x%08x \n", (int)__builtin_return_address(1));
closelog();


그리고 openlog(), syslog(), closelog()를 사용하기 위해서는 아래 헤더를 include 합니다.

#include <syslog.h>


해당 call trace는 /var/log/message에 찍히게 됩니다. (절대경로 아님) 아래는 회사에서 작성한 코드의 출력 예시입니다. 



hostname 까지 깔끔하게 출력됩니다.

댓글
댓글쓰기 폼