- 개요 : System Call Tracer에 대한 설명
[Debugging Tool]
Linux : strace
Soalris : truss
HP-UX : trace(10.x), tusc(11.x)
위 Program들의 Option들이 대개 비슷합니다.이들은 모두 Kernel Level의 함수를 확인할 수 있는 툴이며 직관적으로 이용할 수 있는 방법은 다음과 같습니다.
- 어떤 Shared Library가 사용되는지 알 수 없음.
- 1번과 비슷하지만 어던 파일을 열다가 실패하는지, 대개 Configuration File을 global, home… 순으로 찾음
- Process가 잠시 멈출 때, 어떤 것을 대기하고 있는지…
- 전송되고 들어오는 내용은 무엇인지 (-s 1024 Option)
- 어떤 Signal을 받는지…
- IPC 객체들은 어떤 것들이 이용되는지… 등
System Call은 기본적으로 OS를 다루는 방법에 대한 것이므로, 많은 Hint를 얻을 수 있습니다. Option들 중에 중요한 것 몇 가지만 소개하자면, System Call의 가장 대표적인 것 중의 하나는 실행되고 있는 Daemon의 현재 작업 내용을 살펴볼 수 있는 것이 있습니다.
# strace –p <pid>
형태로 실행중인 Process를 살펴볼 수 있습니다. 더불어 Daemon의 경우 fork가 일어나는 경우가 많은데…
# strace –f –p <pid>
-f Option을 주어 fork되어 나오는 Process까지 trace 하라는 것 입니다. fork외에 vfork도 추적할 수 있어야 하므로 대게 f를 쓸 때는 다음과 같이 사용합니다.
# strace –fF –p <pid> 또는 strace –fFp <Pid>
tusc 사용 예>
tusc –r 10 –w 10 –b 1024 –e –n –p –T “ –f –v [pid]
이것들을 종합하여 다음과 같은 용도로 사용할 수 있습니다.
- Daemon이 갑자기 멈추었는데, Debug용 printf를 집어 넣지 않았을 때, 알고 싶은 경우.
- 과연 Process가 Connection을 접수한 뒤 제대로 fork 되었는지… (Socket Server)
- Telnet으로 접속하였는데, Promprt가 떨어지지 않는 경우 inetd가 무슨 일을 하는지… (대개 tcp_wrapper에 의해 DNS IP resolve 하는 경우가 많음)
예) Tmax 운영 중에 서비스 지연 등의 문제 발생시 해결방안
- Tmax Process 확인
- Process FD 값 확인 – IPPR Server와 CLH FD 값 확인
- CLH 및 업무서버 truss (System Call에 대한 Trace) 확인
CLH의 경우 9번 FD로 부터 Data를 Read하여 IPPR Process는 5번 FD로 Data Send 함.
즉, CLH trace 상 9번 FD는 IPPR Process와의 FD이며 IPPR로 부터 Data를 Read 중 임을 확인. IPPR trace상 5번 FD는 CLH Process와의 FD이며 CLH로 Data를 Send 함
'Operating System' 카테고리의 다른 글
| MTU (Maximum Transmission Unit) (0) | 2010/10/13 |
|---|---|
| Named Process Health Check (0) | 2010/05/14 |
| System Trace Command (0) | 2010/05/07 |
| Process가 참조하는 파일 확인 방법 (0) | 2010/02/28 |
| OS별 CPU 갯수 확인 방법 (0) | 2010/02/27 |
| File Size 검색 (0) | 2010/02/25 |
| 운영체제별 TCP Trace 뜨는 방법 (0) | 2010/02/23 |
| LSOF 사용법 (0) | 2010/02/20 |