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