inflearn logo

Cấu trúc và nguyên lý của nhân Linux: Debugging - Basic [Tác giả trực tiếp giảng dạy Phần 1-2]

Tác giả của cuốn sách "Cấu trúc và nguyên lý của nhân Linux học qua việc debug" sẽ giải thích một cách bài bản về các phương pháp và tính năng debug cơ bản của nhân Linux mới nhất (v6.1), vốn được sử dụng nhiều nhất trong phần mềm hệ thống.

(4.6) 15 đánh giá

391 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging
ftrace
ftrace
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging
ftrace
ftrace

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

4.6

5.0

anhae11

62% đã tham gia

Nội dung khó nhưng thầy cô dạy rất dễ hiểu!

5.0

kech611961

32% đã tham gia

Làm tốt lắm!

5.0

sunny75

100% đã tham gia

2024/07/30/Thứ ba 15:35 Tôi rất thích bài giảng. Cảm ơn bạn đã giải thích tốt về việc gỡ lỗi. Thay vì nghe bài giảng gỡ lỗi, trước tiên tôi nghe các bài giảng khác và nghĩ xem nhật ký phân tích sẽ trông như thế nào, nhưng tôi nhận ra rằng tốt hơn là nên học các bài giảng theo thứ tự, giống như lộ trình mà bạn đưa ra. Trong khi nghe bài giảng, tôi biết được rằng tôi có thể phân tích tốt nhân Linux thông qua việc gỡ lỗi. Cảm ơn bạn luôn vì đã tạo ra những bài giảng tuyệt vời.

Bạn sẽ nhận được điều này sau khi học.

  • Tầm quan trọng của việc gỡ lỗi (debugging) trong các dự án thực tế và quy trình gỡ lỗi thực tế

  • Các phương pháp khác nhau để nâng cao khả năng gỡ lỗi và các loại vấn đề có thể phát sinh trong các dự án thực tế

  • Cách gỡ lỗi kernel bằng cách sử dụng printk và dump_stack()

  • Cách thiết kế driver thiết bị và tạo bản vá lỗi (debug patch) bằng cách sử dụng printk

  • Cách sử dụng và phương pháp thiết lập Ftrace

  • Nguyên lý hoạt động chính của nhân Linux thông qua các thông điệp Ftrace của các sự kiện khác nhau

<Thông báo>

Phát hành phiếu giảm giá 30% nhân dịp vượt mốc 1.500 học viên 

Để kỷ niệm cột mốc vượt qua 500 học viên (Cấu trúc và nguyên lý của Linux Kernel), chúng tôi xin phát hành mã giảm giá 30%. Xin cảm ơn các bạn. Số lượng có hạn cho 100 người đầu tiên.

2. Hướng dẫn lộ trình 🎯

Bài giảng lần này <Cấu trúc và nguyên lý của Linux Kernel: Debugging - Basic [Tác giả trực tiếp giảng dạy Phần 1-2]> là bài giảng nằm trong lộ trình'Linux kernel - basic course dành cho nhà phát triển phần mềm hệ thống'.

Nếu bạn muốn học các chức năng chính cấu thành nên nhân Linux một cách hệ thống, bạn nên tận dụng lộ trình học tập (giảm giá 30% cho toàn bộ khóa học).).

Lĩnh vực bán dẫn hệ thống, ô tô, v.v.

Nhân Linux mà các nhà phát triển phần mềm hệ thống nhất định phải biết


Hệ điều hành nào được sử dụng nhiều nhất trong các thiết bị IT? Đó chính là hệ điều hành Linux. Nó đang được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí trên máy bay và máy chủ. Các công ty bán dẫn hệ thống sử dụng Linux (Linux device driver) để điều khiển phần cứng do chính họ thiết kế. Ngoài ra, Linux cũng đang được ứng dụng rộng rãi trong nhiều linh kiện khác nhau (hệ thống thông tin giải trí, tự lái, viễn thông) cấu thành nên xe điện (Automotive).

Cốt lõi của hệ điều hành Linux chính là nhân Linux (Linux Kernel). Cùng với kiến trúc Armv8-A, có thể xem nhân Linux là nội dung đòi hỏi kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện nay.

Các nhà phát triển phần mềm hệ thống Linux, lập trình viên hệ thống nhúng Linux (BSP) hãy chú ý!

Nhà phát triển trẻ (Junior Developer) trong lĩnh vực phần mềm hệ thống Linux, bao gồm các lĩnh vực bán dẫn hệ thống và xe điện (tự lái, giải trí đa phương tiện)

Người đang chuẩn bị xin việc muốn làm việc trong lĩnh vực phát triển phần mềm hệ thống Linux như bán dẫn hệ thống và xe điện.

✅ Những người có nguyện vọng học cao học trong lĩnh vực phần mềm hệ thống Linux (bộ nhớ, hệ thống tệp, hệ điều hành) in the field of Linux system software (memory, file systems, operating systems)

✅ Các nhà phát triển từ các lĩnh vực khác đang muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux into the Linux system software field

Tuy nhiên, nhân Linux giống như một bức tường khổng lồ đối với những người mới bắt đầu trong lĩnh vực phần mềm hệ thống. Những người mới bắt đầu chắc hẳn đã từng có kinh nghiệm bỏ cuộc nhiều lần khi đang học về nhân Linux. Phiên bản nhân Linux vốn đã khó nay lại càng trở nên phức tạp hơn khi được nâng cấp. Sau năm 2024, phiên bản nhân Linux đang được nâng cấp lên v6.6 trở lên, khiến rào cản gia nhập ngày càng cao hơn.

Các nhà phát triển phần mềm hệ thống Linux trong nhiều lĩnh vực khác nhau, bao gồm cả lĩnh vực bán dẫn hệ thống và xe điện, đều biết rằng việc hiểu rõ nhân (kernel) Linux là điều cần thiết để nâng cao năng lực phát triển. Tuy nhiên, họ đang gặp khó khăn trong việc xác định nên học nhân Linux như thế nào và quan trọng hơn hết là cần nắm vững những nội dung gì trong thực tế công việc.

Thực trạng của các nhà phát triển hệ thống Linux nhúng mới vào nghề hoặc cấp độ Junior

Các lập trình viên hệ thống Linux nhúng mới vào nghề hoặc cấp độ junior thường gặp nhiều khó khăn nhất trong quá trình giải quyết vấn đề. Lý do là gì?

1. Thiếu tài liệu liên quan đến gỡ lỗi

Trong các lĩnh vực phần mềm đa dạng bao gồm cả phát triển web, môi trường phát triển cho việc gỡ lỗi (debugging) được trang bị tương đối tốt. Ngoài ra, cũng có nhiều bài giảng và sách dành cho người mới bắt đầu nên không gặp phải quá nhiều sai sót khi học phương pháp gỡ lỗi. Tuy nhiên, trong phát triển phần mềm hệ thống Linux, mặc dù có các tài liệu liên quan đến gỡ lỗi nhưng hầu hết là các tài liệu phát triển khó tiếp thu đối với người mới bắt đầu.

2. Khó nhận được sự trợ giúp liên quan đến gỡ lỗi (debugging)

Trong các dự án liên quan đến phần mềm hệ thống Linux, việc gỡ lỗi (debugging) được thực hiện như thế nào? Hầu hết đều phân tích nhật ký hạt nhân (kernel log) hoặc bộ nhớ đệm (memory dump). Để phân tích log hoặc dump một cách chính xác, cần có những năng lực gì? Cần có khả năng đọc và hiểu mã nguồn của nhân Linux, hoặc nắm vững các nguyên lý hoạt động như tiến trình (process) hay ngắt (interrupt). Tuy nhiên, thực tế là trong các dự án thực chiến, hiếm có những nhà phát triển tiền bối nào sở hữu những năng lực này, và ngay cả khi may mắn có được một nhà phát triển giỏi gỡ lỗi, họ thường quá bận rộn nên khó có thể giải thích một cách chi tiết và tận tình.

3. Khó hiểu lý do tại sao phải debugging

Bất kể lĩnh vực nào, hầu hết mọi người đều biết rằng kỹ năng cốt lõi để nâng cao năng lực giải quyết vấn đề chính là gỡ lỗi (debugging). Tuy nhiên, không chỉ những người đang tìm việc mà ngay cả các lập trình viên phần mềm hệ thống Linux cấp độ Junior cũng thường không biết tại sao phải gỡ lỗi trong các dự án thực tế. Ngoài ra, họ còn cảm thấy bế tắc vì khó biết được cần chuẩn bị những gì để có thể gỡ lỗi tốt. Tuy nhiên, nếu được giao một lỗi hoặc vấn đề khi đang thực hiện dự án thực tế, họ rất dễ lặp đi lặp lại những sai sót do thậm chí không biết phải bắt đầu phân tích từ đâu. Kết quả là dẫn đến việc phải tăng ca liên tục, và họ tự trách bản thân rằng mình thiếu năng khiếu trong lĩnh vực phần mềm hệ thống Linux.

Năng lực phát triển mà các nhà phát triển phần mềm hệ thống Linux muốn nâng cao nhất là gì?

Rốt cuộc, kỹ năng thực tế mà các nhà phát triển phần mềm hệ thống Linux muốn học nhất là gì? Đó chính là kỹ năng debugging. Vì debugging tỷ lệ thuận với khả năng giải quyết vấn đề, nên họ luôn muốn nâng cao năng lực này. Có rất nhiều blog và tài liệu về nhân Linux (Linux kernel), nhưng hầu như không có tài liệu nào đề cập đến phương pháp giải quyết vấn đề một cách hệ thống bằng các kỹ thuật debugging mới nhất.

Vì vậy, trong chương 3 'Gỡ lỗi và học mã nguồn' của cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua gỡ lỗi' do tôi viết, tôi có đề cập đến nội dung về gỡ lỗi. Khóa học này là bài giảng trực tiếp từ tác giả của cuốn 'Cấu trúc và nguyên lý của nhân Linux học qua gỡ lỗi', tập trung vào nội dung chương 3 của sách. Ngoài ra, tôi cũng sẽ giải thích thêm về các phương pháp gỡ lỗi thực tiễn không có trong sách.

Bạn sẽ học được những nội dung này

Giải thích chi tiết lý do tại sao việc gỡ lỗi (debugging) lại quan trọng trong các dự án thực tế và quy trình thực hiện gỡ lỗi thực tế.

Giới thiệu các phương pháp đa dạng để nâng cao khả năng gỡ lỗi và các loại vấn đề có thể phát sinh trong các dự án thực tế.

Giải thích chi tiết quá trình gỡ lỗi (debug) kernel bằng cách tham khảo các trường hợp tương tự nhất với dự án thực tế.

Giải thích chi tiết phương pháp debug kernel bằng cách sử dụng printk và dump_stack(). Đồng thời, giải thích cả các mã nguồn tham chiếu liên quan.

Chúng tôi sẽ tiến hành thực hành kiểm tra và phân tích nhật ký (log) nhân hệ điều hành (kernel) trên Raspberry Pi thực tế. Ngoài ra, chúng tôi cũng sẽ tải bản sao lưu bộ nhớ (memory dump) bằng chương trình Crash Utility để mở và phân tích chi tiết nhật ký nhân hệ điều hành.

Giải thích chi tiết cách thiết kế trình điều khiển thiết bị (device driver) và tạo bản vá lỗi (debugging patch) bằng cách sử dụng printk.

Giải thích về Ftrace, một tính năng gỡ lỗi cốt lõi được cung cấp bởi nhân Linux. Đặc biệt, giải thích chi tiết về cách sử dụng và cách thiết lập Ftrace.

Giải thích chi tiết về thông điệp Ftrace. Đặc biệt, phân tích chi tiết stack trace để có thể nắm bắt được luồng gọi hàm.

Giải thích cách phân tích mã nguồn kernel thông qua thông điệp Ftrace và các sự kiện Ftrace đa dạng.

Giải thích cách thiết lập Ftrace bằng cách trực tiếp cấu hình trên Raspberry Pi. Ngoài ra, sau khi trích xuất log Ftrace, chúng tôi sẽ phân tích các thông báo Ftrace của nhiều sự kiện khác nhau.


Dựa trên kinh nghiệm viết sách và giảng dạy,
tôi sẽ truyền đạt sâu sắc và chi tiết hơn bất kỳ ai!

Tôi là tác giả của những cuốn sách về 'Linux Kernel' và 'Kiến trúc Arm (Armv8-A, Armv7-A)' vô tiền khoáng hậu trong lĩnh vực phần mềm hệ thống tại Hàn Quốc!. Đồng thời, tôi cũng là một nhà phát triển đang làm việc, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống), và là một nhà giáo dục hoạt động tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.

  • Tác giả cuốn 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Hàn Quốc năm 2021)

  • Tác giả cuốn 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2024)

  • Giảng viên chính của 'Programmers Dev Course: Chuyên gia Hệ thống Linux và Kernel'

  • Tháng 6 năm 2022, Hội nghị Tổng hợp Khoa học Máy tính Hàn Quốc (KCC2022) - Thuyết trình hướng dẫn [Chinh phục Linux Kernel bằng ftrace]

  • Giảng viên nội bộ của LG Electronics về 'Linux Kernel' và 'Armv8 Architecture' (bao gồm cả các nhà phát triển trong và ngoài nước) - (2020~2024)


Tôi có thể tự tin khẳng định rằng mình là một giảng viên có khả năng giải thích về 'tính năng gỡ lỗi của nhân Linux' và 'phương pháp khắc phục sự cố' tốt hơn bất kỳ ai tại Hàn Quốc.

Lưu ý trước khi khóa học bắt đầu

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1

Kiến thức tiên quyết và lưu ý

  • Sẽ rất tốt nếu bạn biết sơ qua về cách thức hoạt động của Linux.

  • Nếu bạn có kiến thức về hệ điều hành hoặc cấu trúc máy tính, bạn sẽ có thể theo học khóa học một cách thoải mái hơn.

  • Không cần kiến thức chuyên sâu về nhân Linux (Linux kernel).

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển trẻ mong muốn nâng cao năng lực trong lĩnh vực phần mềm hệ thống, bao gồm bán dẫn hệ thống và xe điện (tự hành, thông tin giải trí).

  • Người đang chuẩn bị tìm việc muốn phát triển phần mềm hệ thống trong các lĩnh vực như bán dẫn hệ thống và xe điện.

  • Sinh viên đại học có mục tiêu học cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tệp, hệ điều hành)

  • Nhà phát triển từ các lĩnh vực khác đang muốn chuyển hướng sự nghiệp sang lĩnh vực phần mềm hệ thống

  • Nhà phát triển phần mềm hệ thống Linux muốn nâng cao khả năng gỡ lỗi (debugging)

  • Nhà phát triển muốn biết quy trình giải quyết các vấn đề liên quan đến phần mềm hệ thống Linux

Cần biết trước khi bắt đầu?

  • Ngôn ngữ C

  • Kiến trúc máy tính

  • Hệ điều hành

Xin chào
Đây là austinkim

6,316

Học viên

241

Đánh giá

96

Trả lời

4.9

Xếp hạng

22

Các khóa học

Tác giả toàn cầu & Nhà phát triển phần mềm hệ thống Linux (Kiến trúc Arm, RISC-V)

Là tác giả vô tiền khoáng hậu trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, người đã viết các cuốn sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả hai cuốn sách đều được Viện Hàn lâm Khoa học Quốc gia Hàn Quốc bình chọn là Sách ưu tú), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách tiếng Anh "Reverse Engineering Armv8-A Systems" thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Ngoài ra, ông còn là một nhà giáo dục hoạt động tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.

  • Tác giả cuốn sách (tiếng Anh) 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis', (Nhà xuất bản Packt), (Packt Publishing)

  • Tác giả cuốn 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2024))

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2021))

  • Giảng viên chính của 'Programmers Dev Course: Chuyên gia Hệ thống Linux và Kernel'

  • Tháng 6 năm 2022, Hội nghị Tổng hợp Khoa học Máy tính Hàn Quốc (KCC2022) - Thuyết trình hướng dẫn [Chinh phục Linux Kernel bằng ftrace]

  • Giảng viên nội bộ của LG Electronics về 'Linux Kernel' và 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong và ngoài nước) - (2020~Hiện tại)

Tôi có thể tự tin khẳng định rằng mình là một giảng viên có khả năng giải thích về Linux Kernel và kiến trúc Arm (Armv8-A, Armv7-A) tốt hơn bất kỳ ai khác tại Hàn Quốc.

Liên hệ giảng dạy: austindh.kim@gmail.com

Lộ trình chính 🎯

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'

Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản

Thêm

Chương trình giảng dạy

Tất cả

34 bài giảng ∙ (4giờ 35phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

15 đánh giá

4.6

15 đánh giá

  • cms15751340님의 프로필 이미지
    cms15751340

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    • minseoblee6235님의 프로필 이미지
      minseoblee6235

      Đánh giá 1

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • kdpark5057님의 프로필 이미지
        kdpark5057

        Đánh giá 2

        Đánh giá trung bình 5.0

        5

        62% đã tham gia

        • wodud0432886님의 프로필 이미지
          wodud0432886

          Đánh giá 3

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          • redkyo008975님의 프로필 이미지
            redkyo008975

            Đánh giá 4

            Đánh giá trung bình 5.0

            5

            100% đã tham gia

            Khóa học khác của austinkim

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!

            714.470 ₫