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