strace란
strace는 실행 중인 프로세스가 커널에 요청하는 시스템콜(system call)을 실시간으로 가로채 기록하는 리눅스 진단 도구입니다. 프로그램이 파일을 열고, 네트워크 소켓을 만들고, 메모리를 할당하는 등의 모든 저수준 동작을 추적할 수 있습니다.
기본 사용법
# 새 프로세스를 strace로 감싸서 실행
strace ./myprogram
# 이미 실행 중인 프로세스에 붙기 (PID 지정)
strace -p 12345
# 특정 시스템콜만 필터링 (예: 파일 관련)
strace -e trace=open,read,write ./myprogram
언제 유용한가
- "Permission denied" 원인 파악: 정확히 어떤 파일 접근에서 권한 오류가 나는지 확인
- 행(hang) 걸린 프로세스 진단: 어느 시스템콜에서 멈춰 있는지 확인
- 설정 파일 탐색 경로 확인: 프로그램이 실제로 어떤 경로의 설정 파일을 읽으려 시도하는지 추적
주의할 점
모든 시스템콜을 가로채 기록하기 때문에 대상 프로세스 실행 속도가 눈에 띄게 느려질 수 있습니다. 운영 환경에서는 필요한 순간에만 짧게 사용하는 것이 안전합니다.