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

strace를 통한 프로세스 문제 진단

by 날으는물고기 2009. 5. 31.

strace를 통한 프로세스 문제 진단

시스템을 운영하다보면 어떤 이상한? 문제가 발생하기도 한다.
이런 프로세스의 문제를 분석하기 위하여 사용하는 도구가 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
728x90

댓글