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

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

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

# strace ls 
execve("/bin/ls", ["ls"], [/* 18 vars */]) = 0 
uname({sys="Linux", node="airz.net", ...}) = 0 
brk(0)                                  = 0x8053dc4 
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory) 
open("/etc/ld.so.cache", O_RDONLY)      = 3 
fstat64(3, {st_mode=S_IFREG|0644, st_size=25806, ...}) = 0 
old_mmap(NULL, 25806, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40014000 
close(3)                                = 0 
open("/lib/libtermcap.so.2", O_RDONLY)  = 3 
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 
fstat64(3, {st_mode=S_IFREG|0755, st_size=11832, ...}) = 0 
old_mmap(NULL, 14932, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001b000 
mprotect(0x4001e000, 2644, PROT_NONE)   = 0 
old_mmap(0x4001e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x2000) = 0x4001e000 
close(3)                                = 0 
open("/lib/i686/libc.so.6", O_RDONLY)   = 3 
---------------------생략--------------------- 
2005/06/16 19:14 2005/06/16 19:14

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