Strace
Jump to navigation
Jump to search
Strace
Overview
Strace는 시스템 콜 추적 도구. 프로세스가 어떤 시스템 콜을 호출하는지 실시간 모니터링. 문제 분석 필수 도구.
Summary
- * 무엇인가? 시스템 콜 추적 도구. 프로세스 동작 분석
- * 왜 필요한가? 파일 접근, 네트워크, 권한 문제 디버깅
- * 언제 사용하는가? 프로그램 오류 분석, 성능 병목 식별
---
Purpose
이 문서가 존재하는 이유
- Goal: Strace의 개념, 사용법, 설정 가이드 제공
- Scope: 기본 개념, 설치/설정, 사용 예제, 모범 사례
- Non-goals: 고급 커스터마이징, 내부 소스 코드 분석
---
Key Concepts
---
Architecture
strace는 ptrace 시스템 콜로 프로세스를 감시. 프로세스가 시스템 콜을 호출할 때마다 strace가 출력. -e로 필터링, -c로 통계, -T로 시간 측정.
---
Workflow
1. 1. strace로 프로그램 실행
2. 2. 시스템 콜 출력 확인
3. 3. -e로 특정 syscall 필터링
4. 4. -c로 통계 요약
5. 5. 문제 원인 식별
---
Configuration
# 기본 사용
strace -o trace.log ./myapp
# 특정 syscall만 추적
strace -e trace=open,read,write ./myapp
# 통계 요약
strace -c ./myapp
# 실행 중 프로세스 추적
strace -p 1234
# 시간 측정
strace -T -e trace=open,read,write ./myapp
# 파일 접근 추적
strace -e trace=open,openat,read,write -o file-access.log ./myapp
---
Best Practices
- -e로 불필요한 syscall 필터링
- -c로 빠른 통계 확인
- -T로 syscall 시간 측정
- file-access.log로 파일 접근 분석
- 프로덕션에서는 -c만 사용 (출력량↓)
---
Limitations
- 추적 대상 프로세스 성능 저하
- 출력량이 많음 (대규모 프로그램)
- 커널 5.0+에서 일부 syscall 미지원
---
References
---