본문 바로가기
운영체제 (LNX,WIN)

프로세스 시스템 콜 모니터링 (strace,ltrace,truss)

by 날으는물고기 2009. 8. 17.

프로세스 시스템 콜 모니터링 (strace,ltrace,truss)

시스템을 운영하다보면 어떤 이상한? 문제가 발생하기도 한다.
이런 프로세스의 문제를 분석하기 위하여 사용하는 도구가 trace유틸리티이다.
그럼 사용법을 알아보자

strace는 System-call tracer라는 의미로 프로세스가 호출하는 시스템 콜을 보여준다.
아래의 명령으로 확인 가능하다.

# strace -fFp [수행 중인 서버 PID]
f는 fork되는 자식 프로세스를 포함
F는 vfork에 의해 생성된 자식 프로세스를 포함
p는 PID를 지정한다는 말이다.

예)
# strace -fFp 9563

select(0, NULL, NULL, NULL, {0, 500000}) = 0 (Timeout)
kill(11609, SIG_0)                      = 0
stat64("/tmp/pth_deamon/11609.pid", {st_mode=S_IFREG|0666, st_size=23, ...}) = 0
time(NULL)                              = 1243433163
kill(10776, SIG_0)                      = 0
stat64("/tmp/pth_deamon/10776.pid", {st_mode=S_IFREG|0666, st_size=23, ...}) = 0
time(NULL)                              = 1243433163
kill(28155, SIG_0)                      = 0

더욱 자세한것은 man -a strace로 확인가능하다.

추가로...
ltrace를 이용하면 프로세스가 호출하는 공유라이브러리함수를 확인할 수 있다.
좌측은 호출하는 함수 정보이고, 우측 = 다음은 리턴 값이다.
# ltrace -Sp 3454

select(0, 0, 0, 0, 0xbf884b78 <unfinished ...>
SYS__newselect(0, 0, 0, 0, 0xbf884b78)                = 0
<... select resumed> )                                = 0
__xstat(3, "/tmp/pth_deamon/29534.USR2", 0xbf884bd0 <unfinished ...>
SYS_stat64(0xa053a3c, 0xbf884b20, 0xb0dff4, 3, 0)     = -2
<... __xstat resumed> )                               = -1
getpid()                                              = 29534
time(NULL <unfinished ...>
SYS_time(0, 0x824c888, 0, 100, 0)                     = 0x4a1d49b5
<... time resumed> )                                  = 1243433397
pthread_mutex_lock(0x824fa8c, 0xbf884c65, 0, 0, 0x824c888) = 0
pthread_mutex_unlock(0x824fa8c, 0xbf884c65, 0, 0, 0x824c888) = 0


출처 : http://repository.egloos.com/

728x90

댓글