티스토리 뷰
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 까지 깔끔하게 출력됩니다.
'개발 > Linux' 카테고리의 다른 글
application 인자 자동완성 기능 (0) | 2014.02.11 |
---|---|
리눅스 콘솔 글씨 색상 지정 (0) | 2013.09.16 |
특정 폴더 감시 inotify_add_watch() (0) | 2013.07.23 |
vi 문자열 치환 (0) | 2013.07.18 |
Why do a lot of #defines in the kernel use do { ... } while(0)? (0) | 2013.05.09 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday