「프로그램이 정확히 무엇을 하고 있는지」 OS 수준에서 들여다보는 도구.
디버깅·성능 분석·보안 점검에 강력.
strace — 시스템 호출.
apt install strace.
strace ls — ls가 호출하는 모든 시스템 호출(open·read·write·close 등) 출력.
매 호출의 인자·반환값 표시.
활용 — 왜 안 동작.
strace ./broken_program 또는 strace -p PID로 실행 중인 프로세스에 attach.
「어느 파일을 열려고 했는데 ENOENT(없음)」 같은 메시지로 즉시 진단.
설정 파일 누락·권한 부족 같은 원인을 빠르게.
필터링.
strace -e open,read ls — 특정 syscall만.
-c — 통계만(각 syscall 횟수·시간).
-o file로 파일에 저장.
-f — fork된 자식까지 추적.
ltrace — 라이브러리 호출.
ltrace ls — libc 같은 라이브러리 함수 호출 추적.
시스템 호출보다 더 높은 수준 — malloc·printf·strcpy 같은.
「어느 함수에서 시간 쓰나」 라이브러리 수준 분석.
perf·ftrace는 더 모던하고 강력한 대안.
한 줄 요약
strace는 시스템 호출 추적(open·read 등), -p PID로 attach, -e로 필터, -c로 통계.
ltrace는 라이브러리 함수 호출.
「왜 안 동작」 디버깅에 매우 강력.
perf가 모던 대안.
더 알아볼 것
- perf — 더 모던한 분석 도구
- ftrace — 커널 함수 추적
- DTrace·eBPF — 차세대 추적