Operating System2010/05/07 12:59

- 개요 : System Call Tracer에 대한 설명

[Debugging Tool]

Linux : strace
Soalris : truss
HP-UX : trace(10.x), tusc(11.x)

위 Program들의 Option들이 대개 비슷합니다.이들은 모두 Kernel Level의 함수를 확인할 수 있는 툴이며 직관적으로 이용할 수 있는 방법은 다음과 같습니다.

  1. 어떤 Shared Library가 사용되는지 알 수 없음.
  2. 1번과 비슷하지만 어던 파일을 열다가 실패하는지, 대개 Configuration File을 global, home… 순으로 찾음
  3. Process가 잠시 멈출 때, 어떤 것을 대기하고 있는지…
  4. 전송되고 들어오는 내용은 무엇인지 (-s 1024 Option)
  5. 어떤 Signal을 받는지…
  6. 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]

이것들을 종합하여 다음과 같은 용도로 사용할 수 있습니다.

  1. Daemon이 갑자기 멈추었는데, Debug용 printf를 집어 넣지 않았을 때, 알고 싶은 경우.
  2. 과연 Process가 Connection을 접수한 뒤 제대로 fork 되었는지… (Socket Server)
  3. Telnet으로 접속하였는데, Promprt가 떨어지지 않는 경우 inetd가 무슨 일을 하는지… (대개 tcp_wrapper에 의해 DNS IP resolve 하는 경우가 많음)


예) Tmax 운영 중에 서비스 지연 등의 문제 발생시 해결방안

  1. Tmax Process 확인 
      

  2. Process FD 값 확인 – IPPR Server와 CLH FD 값 확인 
       


  3. 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 함

저작자 표시 비영리 변경 금지
Creative Commons License

'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
Posted by BLUEDAY™