시스템 콜과 신호를 추적하여 프로그램의 실행 과정을 살펴 볼 수 있게 하는 명령어이다.

1.사용법 : strace [옵션] 명령어 [매개변수]

strace 명령은 시스템 콜과 신호를 추적해서 진단하고 디버깅해 주는 도구로써, 프로그렘에서 실행되는 프로세스가 어떤 것인지 추적이 가능하다.
이외에도, 바이너리 파일에 어떤 경로 이름이 컴파일되어 있는지 살펴보거나, 조건을 살펴 볼 경우, 혹은 바이너리 파일의 동작 원리를 알아 볼 경우에도 사용이 가능하다. 아래 예제와 같이 strace 명령을 실행해 보자. 이는 ls 명령에 대한 다양한 컴파일 경로나 조건, 동작에 대한 정보를 살펴 볼 수 있다.

01.# strace ls
02.execve("/bin/ls", ["ls"], [/* 18 vars */]) = 0
03.uname({sys="Linux", node="airz.net", ...}) = 0
04.brk(0)                                  = 0x8053dc4
05.open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
06.open("/etc/ld.so.cache", O_RDONLY)      = 3
07.fstat64(3, {st_mode=S_IFREG|0644, st_size=25806, ...}) = 0
08.old_mmap(NULL, 25806, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000
09.close(3)                                = 0
10.open("/lib/libtermcap.so.2", O_RDONLY)  = 3
11.read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\r\0"..., 1024) = 1024
12.fstat64(3, {st_mode=S_IFREG|0755, st_size=11832, ...}) = 0
13.old_mmap(NULL, 14932, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001b000
14.mprotect(0x4001e000, 2644, PROT_NONE)   = 0
15.old_mmap(0x4001e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x4001e000
16.close(3)                                = 0
17.open("/lib/i686/libc.so.6", O_RDONLY)   = 3
18.---------------------생략---------------------
2005/06/16 19:14 2005/06/16 19:14

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다