열렬히.뛰기

운영체제 디버깅

운영체제 > Part 1 : 운영체제란? > 공룡책 1장 : 컴퓨터 시스템 > 운영체제의 구조 > 마스터플랜 > 운영체제 디버깅

디버깅이란?

하드웨어와 소프트웨어에서 시스템의 오류를 발견하고, 수정하는 행위

장애 분석

프로세스가 실패한다면, 이를 로그 파일에 기록.

프로세스가 사용하던 메모리를 캡쳐한 코어 덤프를 취하고 차후 분석을 위해 파일로 저장한다.

성능 관찰 및 조정

병목 지점을 제거함으로써 성능을 향상하는데 초점을 둔다.

병목 지점을 찾기 위해서는 시스템 성능을 감시해야 하는데, 이때 쓰이는 도구는

두 가지의 접근 방식을 쓸 수 있다.

1. 카운터

운영체제는 카운터를 통해 호출된 시스템 콜 횟수, 장치, 작업수를 본다.

ps, top, vmstat, netstat 등이 대표적인 명령어이다.

대부분의 카운터 기반 도구는 /proc 파일 시스템에서 통계를 읽는다.

이는 커널 메모리에서만 존재하는 의사(pseudo) 파일 시스템이다.

프로세스는 /proc 의 하위 디렉토리로 표기.

2. 추적

특정 이벤트에 대한 데이터를 추적한다.

strace, gdb, perf, tcpdump 등이 대표적.

3. BCC

리눅스 시스템을 위한 추적 기능을 제공하는 툴킷.

  • 실행 중인 리눅스 시스템에 동적으로 삽입될 수 있다.
  • 특정 이벤트를 캡처 하거나 시스템 성능을 관찰하는데 사용될 수 있음.