| HOME / 정보공유 / AIX 명령어 모음

trace
trace trace 디먼 목적 선택된 시스템 이벤트를 기록합니다. 구문
trace [ -a [ -g ] ] [ -f | -l ] [ -b | -B] [ -c] [ -C [ CPUList | all ]] [ -d ] [ -h ] [ -j Event [ ,Event ] ] [ -k Event [ ,Event ] ] [ -J Event-group [ ,Event-group ]] [ -K Event-group [ ,Event-group ]] [ -m Message ] [ -n ] [ -o Name ] [ -o- ] [ -p ] [ -s ] [ -L Size ] [ -T Size ]
설명
trace 디먼은 추적 세션을 구성설정하고 시스템 이벤트를 수집하기 시작합니다. 추적 기능으로 수집된 데이터는 추적 로그에 기록됩니다. 추적 로그의 보고서는 trcrpt 명령으로 생성할 수 있습니다.
-a 플래그로 호출되면, 추적 디먼은 비동기적으로 수행됩니다(즉, 백그라운드 타스크로 수행됩니다). 그렇지 않으면, 디먼은 대화식으로 수행되며 부속명령에 대한 프롬프트가 표시됩니다.
시스템 관리 인터페이스 도구(SMIT)를 사용하여 trace 디먼을 수행할 수 있습니다. SMIT를 사용하려면, 다음과 같이 입력하십시오.
smit trace
세 가지 모드의 추적 데이터 집합이 있습니다.
대체(Alternate)(디폴트) 모든 추적 이벤트가 추적 로그 파일에 캡처됩니다.
순환(Circular) ( -l) 추적 이벤트는 메모리 내의 버퍼 안에 감추며, 추적 데이터 집합이 정지될 때까지 추적 로그 파일에 캡처되지 않습니다.
단일(Single) ( -f) 추적 이벤트 집합은 메모리 내의 추적 버퍼가 채워지면 정지하며, 버퍼의 내용은 추적 로그 파일에서 캡처됩니다.
버퍼 할당 추적 버퍼는 커널 힙(기억영역)에서 할당되거나 별도의 세그먼트에 놓입니다. 디폴트로 별개의 세그먼트에 할당되는 데, 요청된 버퍼 크기가 너무 커서 커널 힙에 적합하지 않으면 커널 힙에서 버퍼가 할당됩니다. 별개의 세그먼트에서 버퍼를 할당하면 추적 성능이 다소 저하됩니다. 그러나 별개의 세그먼트에 있는 버퍼는 페이징 공간을 차지하지 않고 단지 고정된 메모리만을 차지합니다. 버퍼 할당의 유형은 -b 또는 -B 플래그(선택적)와 함께 지정될 수 있습니다.
플래그
-a trace 디먼을 비동기식으로 백그라운드 타스크로 수행합니다. 이런 식으로 trace가 시작되면, 사용자는 trcon, trcoff 및 trcstop 명령을 사용하여 각각 추적을 시작하고, 정지하며, 추적 세션을 종료할 수 있습니다. 이러한 명령은 trace에 링크시켜서 구현됩니다.
-b 커널 힙에 버퍼를 할당합니다. 요청된 버퍼 영역을 커널 힙에서 가져올 수 없는 경우, 명령이 실패합니다.
-B 별개의 세그먼트에서 버퍼를 할당합니다.
-c .old를 이름에 추가하면서 추적 로그 파일을 저장합니다.
-C [ CPUList | all ] CPUList에 있는 CPU당 한 개의 버퍼 세트를 사용하는 추적. CPU는 쉼표 또는 공백으로 분리되거나, 큰 따옴표로 묶을 수 있습니다. 모든 CPU를 추적하려면 all을 지정하십시오. 플래그가 CPU당 한 개의 버퍼 세트를 사용하고 CPU당 한 개의 파일을 생성하므로 많은 양의 메모리와 파일 공간을 사용할 수 있으므로 조심해서 사용해야 합니다. 생성되는 파일의 이름은 trcfile, trcfile-0, trcfile-1 등 입니다. 여기서 0, 1 등은 CPU 번호입니다. -T 또는 -L이 지정되어 있으면, 크기는 각 버퍼 세트와 각 파일에 적용됩니다. 단일프로세서 시스템에서는 -Call을 지정할 수 있지만 -C와 CPU 번호 리스트는 무시됩니다. -Call 또는 -C "0 1"과 같은 CPU 둘 이상을 지정하는 데 -C를 사용할 경우, 연관된 버퍼는 시스템 덤프에 놓여지지 않습니다.
-d 추적 데이터 집합의 자동 시작을 사용 불가로 만들어 추적 데이터 집합의 시작을 지연시킵니다. 일반적으로 추적 데이터의 집합은 사용자가 trace 디먼을 발행할 때 자동으로 시작합니다. trcon 명령을 사용하여 추적 데이터의 수집을 시작하십시오.
-f 단일 모드로 추적을 수행합니다. 추적 데이터를 수집하면 메모리내 버퍼가 채워지자마자 정지됩니다. 그런 다음 추적 데이터가 추적 로그에 기록됩니다. trcon 명령을 사용하여 추적 데이터 수집을 다시 시작하고 또 다른 꽉찬 데이터 버퍼를 캡처하십시오. 버퍼가 꽉 차기 전에 trcoff 부속명령을 발행하는 경우, 추적 데이터 수집이 정지되고 버퍼의 현재 내용이 추적 로그에 기록됩니다.
-g 일반 추적 채널(채널 1 - 7)에서 추적 세션을 시작합니다. 이 플래그는 추적이 비동기식으로 수행되는 경우(-a 플래그)에만 작동합니다. 명령의 리턴 코드는 채널 번호이며, 채널 번호는 일반 추적 서브루틴 호출에서 연속적으로 사용되어야 합니다. 일반 추적 세션을 정지하려면 명령 trcstop -를 사용하십시오.
-h 추적 로그에서 헤더(header) 레코드를 생략합니다. 일반적으로, trace 디먼은 날짜와 시간이 있는 헤더 레코드를(date 명령으로부터) 추적 로그의 맨 앞에 기록합니다. 시스템 이름, 버전 및 릴리스, 노드 식별 및 시스템 식별( uname -a 명령으로부터) 및 사용자 정의 메세지. 추적 로그의 시작 부분에 있는 헤더(header) 레코드의 정보는 trcrpt 명령에 포함됩니다.
-j Event[,Event]
-k Event[,Event] 추적 데이터를 수집하거나(-j 플래그) 실행하려는(-k 플래그) 사용자 정의 이벤트를 지정합니다. Event 리스트 항목은 쉼표 또는 공백으로 분리하거나 큰 따옴표로 묶을 수 있습니다.
주: 다음 이벤트는 trcrpt 보고서에서 pid, cpuid 및 exec 경로 이름을 결정하는 데 사용됩니다.
106 DISPATCH
10C DISPATCH IDLE PROCESS
134 EXEC SYSTEM CALL
139 FORK SYSTEM CALL
465 KTHREAD CREATE
이러한 이벤트가 누락될 경우, trcrpt 명령이 보고하는 정보는 불완전한 것입니다. 그러므로 -j 플래그를 사용할 때는 이러한 모든 이벤트를 Event 리스트에 포함해야 합니다. 반대로 -k 플래그를 사용할 때는 이러한 이벤트를 Event 리스트에 포함하면 안됩니다. SMIT(시스템 관리 인터페이스 도구) 또는 -J 플래그로 추적을 시작할 경우, 이 이벤트는 tidhk 그룹에 있습니다.
-J Event-group [, Event-group ]
-K Event-group [ ,Event-group ] 이벤트 그룹이 포함되거나(-J) 제외되도록(-K) 지정합니다. "디버그 및 성능 추적"에서 이벤트 그룹이 설명됩니다. -J 및 -K 플래그는 -j 및 -k와 같이 작동됩니다. 단, 작동 대상이 개별 후크 ID가 아닌 이벤트 그룹입니다. 네 개의 모든 플래그(-j, -J, -k 및 -K)를 지정할 수 있습니다.
-l 원형 모드로 추적을 수행합니다. 추적 데이터 수집이 정지할 때 trace 디먼은 추적 로그에 추적 데이터를 기록합니다. 추적 데이터의 최종 버퍼만이 캡처됩니다. trcoff 명령을 사용하여 추적 데이터 수집을 정지하는 경우, trcon 명령을 사용하여 재시작하십시오.
-L Size 1 MB의 디폴트 추적 로그 파일 크기를 설명된 값으로 변경합니다. 파일 크기를 0으로 지정하면 추적 로그 파일 크기는 디폴트 크기로 설정됩니다.
주: 원형(circular) 및 대체(alternate) 모드에서, 추적 로그 파일 크기는 적어도 추적 버퍼 크기의 두 배이어야 합니다. 단일 모드에서 추적 로그 파일은 최소한 버퍼 크기여야 합니다. 추적 버퍼 크기 제어에 대해서는 -T 플래그를 참조하십시오.
-m Message 추적 로그 헤더(header) 레코드의 메세지 필드에 포함될 텍스트를 지정합니다.
-n 추적 로그 헤더(header)에 다음과 같은 정보를 추가합니다. 잠금 정보, 하드웨어 정보, 그리고 각 헤더(header) 항목에 대해 기호 이름, 주소 및 유형.
-o Name /var/adm/ras/trcfile 디폴트 추적 로그 파일을 겹쳐쓰고, 추적 데이터를 사용자 정의 파일에 기록합니다.
-o - 디폴트 추적 로그 이름을 겹쳐쓰고, 추적 데이터를 표준 출력으로 기록합니다. 이 플래그를 사용하면 -c 플래그는 무시됩니다. -o - 및 -C가 지정될 경우, 오류가 발생합니다.
-p 각 후크와 함께 현재 프로세서의 cpuid를 포함합니다. 이 플래그는 64 비트 커널 추적에서만 유효합니다.
주: 이 옵션의 지정 여부와 관계없이 trcrpt 명령은 cpuid를 보고할 수 있습니다.
-s 추적 로그가 채워지면 추적을 정지시킵니다. trace 디먼은 일반적으로 추적 로그가 채워지면 랩(wrap)을 하고 계속해서 추적 데이터를 수집합니다. 비동기 조작 중에, 이 플래그를 사용하면 trace 디먼이 추적 데이터 수집을 정지합니다. 대화식 조작 중에, 추적을 정지하려면 quit 부속명령을 사용해야 합니다.
-T Size 128 KB의 디폴트 추적 버퍼 크기를 설명된 값으로 변경합니다. 1 MB 이상의 버퍼 영역을 요청하려면 사용자가 루트이어야 합니다. 가능한 최대 크기는 268435184 바이트이고, -f 플래그를 사용하지 않을 경우에는 536870368 바이트입니다. 가능한 최소 크기는 8192 바이트이고, -f 플래그를 사용하지 않을 경우에는 16392 바이트입니다. -f 플래그를 사용할 때의 가능한 크기는 8192 바이트에서 16392 바이트까지입니다. 그러나, 실제 사용된 크기는 16392 바이트입니다.
주: 원형(circular) 및 대체(alternate) 모드에서, 추적 버퍼 크기는 적어도 추적 로그 파일 크기의 반 이하여야 합니다. 단일 모드에서 추적 로그 파일은 최소한 버퍼 크기여야 합니다. 추적 로그 파일 크기 제어에 대해서는 -L 플래그를 참조하십시오. 또한 추적 버퍼는 고정된 메모리로 페이징이 가능하지 않습니다. 따라서 추적 버퍼가 커질수록 응용프로그램이 사용할 수 있는 물리적 메모리는 줄어듭니다.
-b 또는 -B 플래그가 지정되지 않은 경우, 시스템은 커널 힙에서부터 버퍼 공간을 할당하려고 시도합니다. 이 요청이 만족될 수 없는 경우, 시스템은 버퍼를 별개의 세그먼트로 할당하려 합니다.
-f 플래그는 실제로 한 개의 버퍼같이 행동하는 두 개의 버퍼를 사용합니다(단, 첫 버퍼가 다 채워지면, 버퍼 wraparound 추적 후크가 기록됩니다).
부속명령
대화식으로 수행될 때, 추적은 다음 부속명령을 인식합니다.
trcon 추적 데이터 집합을 시작시킵니다.
trcoff 추적 데이터 집합을 정지시킵니다.
q 또는 quit 추적 데이터의 수집을 정지시키고 trace를 종료합니다.
!Command Command 매개변수가 지정한 쉘 명령을 수행합니다.
? trace 부속명령의 요약을 표시합니다.
신호
INTERRUPT 신호는 토글로 작동하여 추적 데이터 수집을 시작 및 정지합니다. 추적된 프로세스에 대한 인터럽트가 SIG_IGN으로 설정됩니다.
예제
대화식으로 추적하려면, trace를 입력한 다음 > 프롬프트가 나타나면, 원하는 부속명령을 지정하십시오. 예를 들면, anycmd 명령의 수행 중에 시스템 이벤트를 추적하려면, 다음과 같이 입력하십시오.
trace
> !anycmd
> q
명령이 종료하면 지연되는 것을 피하려면, 한 개의 명령행만 사용하여 추적을 비동기적(-a)으로 시작해야 합니다. 다음과 같이 입력하십시오.
trace -a; anycmd; trcstop
10초 동안 시스템 자체를 추적하려면, 다음과 같이 입력하십시오.
trace -a; sleep 10; trcstop
추적 데이터를 고유의 추적 로그 파일(/var/adm/ras/trcfile 디폴트 추적 로그 파일 대신)로 출력하려면 다음과 같이 입력하십시오.
trace -a -o /tmp/my_trace_log; anycmd; trcstop
수집 프로세스에서 특정 이벤트를 제외하고 cp 명령의 실행을 캡처하려면, 다음과 같이 입력하십시오.
trace -a -k "20e,20f"; cp /bin/track /tmp/junk; trcstop
위의 예제에서 -k 옵션은 lockl와 unlockl 기능(20e 및 20f 이벤트)의 이벤트 수집을 억제합니다.
후크 234와 프로세스 이름을 볼 수 있게 하는 후크를 추적하려면, 다음과 같이 입력하십시오.
trace -a -j 234 -J tidhk
이것은 이벤트-그룹 "tidhk"의 후크와 후크 234를 추적합니다.
추적이 CPU당 한 개의 버퍼 세트를 사용하게 하려면, 다음과 같이 지정하십시오.
trace -aC all
생성되는 파일은 /var/adm/ras/trcfile, /var/adm/ras/trcfile-0, /var/adm/ras/trcfile-1, etc.에서 /var/adm/ras/trcfile-(n-1)까지 입니다. 여기서 n은 시스템에 있는 CPU의 수입니다.
주: trace -aCall -o mylog는 mylog, mylog-0, mylog-1, ... 파일을 생성합니다.
파일
/usr/include/sys/trcmacros.h trchook 및 utrchook 매크로를 정의합니다.
/var/adm/ras/trcfile 디폴트 추적 로그 파일을 포함하고 있습니다.
관련 정보
trcevgrp 명령, trcnm 명령, trcrpt 명령, trcstop 명령.
trchook 서브루틴, trcgen 서브루틴, trcstart 서브루틴, trcon 서브루틴, trcoff 서브루틴, trcstop 서브루틴.
trcgenk 커널 서비스.