디버깅이란?
하드웨어와 소프트웨어에서 시스템의 오류를 발견하고, 수정하는 행위
장애 분석
프로세스가 실패한다면, 이를 로그 파일에 기록.
프로세스가 사용하던 메모리를 캡쳐한 코어 덤프를 취하고 차후 분석을 위해 파일로 저장한다.
성능 관찰 및 조정
병목 지점을 제거함으로써 성능을 향상하는데 초점을 둔다.
병목 지점을 찾기 위해서는 시스템 성능을 감시해야 하는데, 이때 쓰이는 도구는
두 가지의 접근 방식을 쓸 수 있다.
1. 카운터
운영체제는 카운터를 통해 호출된 시스템 콜 횟수, 장치, 작업수를 본다.
ps, top, vmstat, netstat 등이 대표적인 명령어이다.
대부분의 카운터 기반 도구는 /proc 파일 시스템에서 통계를 읽는다.
이는 커널 메모리에서만 존재하는 의사(pseudo) 파일 시스템이다.
프로세스는 /proc 의 하위 디렉토리로 표기.
2. 추적
특정 이벤트에 대한 데이터를 추적한다.
strace, gdb, perf, tcpdump 등이 대표적.
3. BCC
리눅스 시스템을 위한 추적 기능을 제공하는 툴킷.
- 실행 중인 리눅스 시스템에 동적으로 삽입될 수 있다.
- 특정 이벤트를 캡처 하거나 시스템 성능을 관찰하는데 사용될 수 있음.