보안 · 네트워크

/

시스템 · 운영체제

리눅스 시스템 디버깅

어셈블리 코드를 이해하고 함수의 역추적을 할 수 있으며 프로세스를 추적하는 gdb이 내부 구조를 이해할 수 있습니다. 또한 커널의 디버깅 도구를 다룹니다.

(5.0) 수강평 5개

수강생 125명

Thumbnail

중급자를 위해 준비한
[시스템 · 운영체제, 백엔드] 강의입니다.

이런 걸
배워요!

  • Intel 아키텍처

  • Nasm 어셈블리

  • 어셈블리 기본 문법

  • 어셈블리 함수 호출

  • Backtrace 구현

  • Ptrace

  • Strace

  • Gdb

  • Uftrace

  • Ftrace

  • Kprobe

Linux 운영 체제 내의 문제를 식별하고 해결하기 위한 체계적인 접근 방식이 포함되며, 시스템 동작을 분석하고 문제를 격리하며 효과적인 솔루션을 구현하기 위한 다양한 도구와 기술을 활용합니다.

학습 내용

섹션 (1) Intel 아키텍처

PC의 기본 CPU로 가장 많이 사용되는 Intel CPU의 레지스터 구조와 ALU의 연산 과정을 다룹니다.

섹션 (2) Nasm 어셈블리

NASM(Netwide Assembler) 어셈블리 언어의 학습에 중점을 두고 저수준 어셈블리 언어를 설명합니다.

섹션 (3) 어셈블리 기본 문법 I

어셈블리 언어의 기본 구문, 구조 및 규칙을 익히고 기본 어셈블리 코드를 효과적으로 작성하는 방법을 설명 합니다.

섹션 (4) 어셈블리 기본 문법 II

어셈블리가 CPU의 flag에 의해서 조건부 제어를 하는 전과정을 설명 합니다.

섹션 (5) 어셈블리 함수 호출

함수의 호출과정에서 인자, 리턴 값, 지역변수를 어셈블리가 처리하는 방식을 설명 합니다.

섹션 (6) Backtrace 구현

역추적 알고리즘을 효과적으로 다루고 디버깅 기술, 호출 스택 분석 과정을 설명 합니다.

섹션 (7) Ptrace

한 프로세스(추적자)가 다른 프로세스(피추적자)의 실행을 제어하고 모니터링하는 기법을 설명 합니다.

섹션 (8) Strace

Strace를 사용하는 방법을 다루고 운영 체제와의 프로그램 상호 작용을 설명 합니다.

섹션 (9) Gdb

Gdb의 중단점 설정, 코드 단계별 실행, 프로그램 상태 분석, 소프트웨어 버그 식별 및 해결 방법을 설명 합니다.

섹션 (10) Uftrace

uftrace를 사용하여 프로그램의 함수 호출 흐름과 성능을 추적 및 분석하는 방법을 설명 합니다.

섹션 (11) Ftrace

Linux에서 커널 기능 추적을 위해 Ftrace를 활용하는 방법을 다루고, 이를 통해 커널 동작, 성능 문제 및 시스템 수준 상호 작용을 설명 합니다.

섹션 (12) Kprobe

Linux 커널의 특정 지점을 동적으로 추적하고 디버깅, 성능 분석 및 커널 내부 구조를 설명 합니다.

수강 전 참고 사항

  • 강의 학습에 필요한 참고 사항이 있다면 꼼꼼하게 작성해주세요.

  • 수강생들이 강의에서 다루는 내용을 충분히 이해하게 돕고, 학습 만족도를 높일 수 있어요.

실습 환경

  • 운영 체제 및 버전(OS): Ubuntu 16.04, 18.04

  • 편집 도구 : Ubuntu VIM, Gcc, Gdb, Make, Ctags

  • 컴파일러 : Gcc

학습 자료

  • 제공하는 학습 자료 형식 (PDF, 소스 코드)

  • 수업 시 ppt를 이용한 판서를 진행하고 이를 수업 자료로 공유합니다.

선수 지식 및 유의 사항

  • 본 과정을 듣기 위한 선수 지식 : C언어 기본, 리눅스 기본

  • 본 강의 동영상 사양 : FPS-60, 해상도-1280*720, 오디오 샘플 레이트-44,100

  • 언제든 질문해 주시고, 강의는 open source 버전 업그레이드 시 수정될 수 있습니다.

  • 강의 시 배포되는 학습 자료는 수업에만 참고 하시고 무단 배포는 금합니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 시스템 디버깅의 원리를 이해 하고 싶으신 분

  • 리눅스 시스템 개발자

  • 리눅스 커널 개발자

선수 지식,
필요할까요?

  • C 언어

  • 리눅스 기본

김정인 강사님은 오픈소스가 중요하다며

리눅스 커널 및 딥러닝의 구현 소스를 취미 삼아 매일 분석 하는 오픈 소스 매니아 입니다.

소스를 통해 이해 한다며 무작정 소스 분석으로 모든 원리를 이해하려 하므로

수강 시 소스 폭탄에 주의 해야 합니다.

 

강의문의 : jikim@imguru.co.kr

커리큘럼

전체

35개 ∙ (9시간 28분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!