inflearn logo

Structure and Principles of the Linux Kernel: Debugging - Advanced Practice [Author's Lecture Part 1-3]

The author of "Learning the Structure and Principles of the Linux Kernel Through Debugging" provides a thorough explanation of the most advanced kernel memory dump debugging skills used in system software, based on the latest Linux kernel (v6.1).

(5.0) 13 reviews

328 learners

Level Intermediate

Course period Unlimited

trace32
trace32
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging
trace32
trace32
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
debugging
debugging

What you will gain after the course

  • Debugging Linux kernel memory dumps with TRACE32 and the Crash Utility program

  • Various case studies you may encounter during the process of developing real-world projects

  • boot-time ftrace tracer

  • Debug major data structures of the Linux kernel by running the Crash Utility program

  • Run the TRACE32 program to debug the main data structures of the Linux kernel

<Notice>

1. Issuing 30% discount coupons to celebrate reaching 200 students

To celebrate reaching 200 students (Structure and Principles of the Linux Kernel), we are issuing a 30% discount coupon. Thank you. It is limited to the first 200 people.

2. Roadmap Guide 🎯

This course, <Structure and Principles of the Linux Kernel: Debugging - Advanced Practice [Author's Lecture Part 1-3]>, is included in the roadmap 'Linux kernel - basic course for system software developers'.

If you want to learn the key functions that make up the Linux kernel systematically, it is recommended to use the roadmap (30% discount on all courses).

System semiconductors, the automotive sector, etc.

Linux Kernel: A Must-Know for System Software Developers


What is the most widely used operating system across all IT devices? It is the Linux operating system. It is used in smartphones, digital TVs, in-flight entertainment systems, and servers. System semiconductor companies use Linux (Linux device drivers) to control the hardware they design. Furthermore, Linux is extensively utilized in various components (infotainment, autonomous driving, telematics) that make up electric vehicles (Automotive).

The core of the Linux operating system is the Linux kernel. Along with the Armv8-A architecture, the Linux kernel can be seen as the area requiring the most essential foundational knowledge currently in demand within the system software industry.

Attention Linux system software developers and Linux embedded system (BSP) programmers!

Junior developers in the Linux system software field, including system semiconductors and electric vehicles (autonomous driving, infotainment)

Job seekers who want to work in Linux system software development fields such as system semiconductors and electric vehicles

Aspiring graduate students in the field of Linux system software (memory, file systems, operating systems)

Developers from other fields who want to change their career to the Linux system software field

However, the Linux kernel is like a massive barrier for beginners in the field of system software. Many beginners have likely experienced giving up multiple times while trying to learn the Linux kernel. As versions of the already difficult Linux kernel are upgraded, it is evolving to become increasingly complex. Since 2024, Linux kernel versions have been upgrading to v6.6 and above, and the barrier to entry is rising even higher.

Linux system software developers across various fields, including system semiconductors and electric vehicles, know that they need a deep understanding of the Linux kernel to enhance their development capabilities. However, they are finding it difficult to figure out how to learn the Linux kernel and, more importantly, which specific aspects are most critical for practical, real-world applications.

What is the development capability that Linux system software developers want to improve the most?

What is the practical skill that Linux system software developers want to learn the most? It is none other than debugging skills. Since debugging is directly proportional to problem-solving ability, they want to improve their debugging capabilities. While there are many blogs and materials about the Linux kernel, they rarely cover how to systematically solve problems using the latest debugging techniques.

That is why I cover the topic of debugging in Chapter 3, 'Debugging and Code Learning,' of my book 'The Structure and Principles of the Linux Kernel Learned Through Debugging.'

Key Differentiating Points of the Lecture

This course consists of content that has never been covered on YouTube or any other lecture platform before! It covers the latest Linux kernel debugging methods and various case studies. Additionally, it introduces how to debug kernel data structures through Linux kernel memory dumps. Those who take this course can download the educational program (TRACE32) and practice directly.

1. A comprehensive collection of debugging methods closest to real-world development

The job skills that job seekers and junior developers are most curious about are which debugging tools to use and how to perform debugging. In this lecture, we introduce how to debug kernel data structures using 'kernel memory dump,' the most advanced debugging method.

2. Introduction to Debugging Methods Used by Linux Kernel BSP Developers at Global System Semiconductor Companies

The system semiconductor industry has been rising recently. How do Linux kernel BSP developers at Qualcomm, who possess the world's leading technology among global system semiconductor companies, debug Linux kernel drivers?

This lecture covers the following topics: we will debug kernel data structures using the TRACE32 simulator for Linux kernel memory dumps, and analyze key kernel operations by loading memory dumps with the crash-utility.

3. Introduction to the latest ftrace debugging method, 'boot-time tracer'

As the Linux kernel version upgrades, debugging methods are also evolving. In ftrace, the 'boot-time tracer' feature has been proposed, which allows tracing kernel behavior during the booting process by simply changing a few settings. In this lecture, we introduce various ways to utilize the 'boot-time tracer'.

4. TRACE32 Simulator Program (for Educational Use) and Linux Kernel Dump Provided

TRACE32 debuggers and programs are widely used throughout Linux system software development. The TRACE32 program requires a license to run. By taking this course, you can download the TRACE32 simulator program for educational use from the 'Inflearn Course Materials' and use it yourself to debug memory dumps. Additionally, you can download and practice with three kernel memory dumps.

What you will learn

Explains why dump analysis is necessary in real-world projects. Introduces Crash-Utility and TRACE32, which are widely used in practical projects.

It explains in detail how to debug in real-world projects using Crash-Utility and TRACE32.

While explaining the contents of a book about TRACE32, we will directly run TRACE32 to perform debugging. You can download the educational TRACE32 program (educational: for simulator use) while taking the class and follow along with the hands-on practice.

Explains how to install and run the TRACE32 (educational, simulator) program uploaded in the 'Lecture Materials'. It also provides a detailed explanation of how to download the kernel memory dump uploaded in the 'Lecture Materials' and load it into the TRACE32 program.


It introduces three ways to configure ftrace and explains in detail why a boot-time ftrace tracer is necessary.

Explains how to configure the boot-time ftrace tracer and provides a detailed analysis of the related kernel source code.

It introduces how to configure the boot command line and provides a detailed analysis of the related ftrace logs. It also covers how to extract kernel logs as ftrace logs and how to analyze the associated messages.

We analyze ftrace messages in detail and explain the related operating principles. Additionally, we conduct a thorough analysis of the kernel source code related to initcall.

Run the Crash Utility program to debug key data structures of the Linux kernel. Analyze the relevant kernel driver source code together to explain the operating principles in detail.


We explain the detailed operating principles of related functions while debugging Linux kernel dumps using the Crash Utility program.


We introduce various case studies that can be encountered during the development of real-world projects. We provide a detailed analysis of the relevant kernel logs and the operating principles of the kernel. Additionally, we explain how to resolve these issues through debugging.


It explains case studies on stack corruption and memory leak issues that can be encountered during the development of real-world projects.

It explains the data structures and architecture of the Linux kernel memory system through Crash Utility debugging.

Explains the main TRACE32 commands (memory address casting) introduced in the book. It provides a detailed explanation of how to use the relevant commands directly within the TRACE32 program.

I will explain the symbol information of the system call table and verify the system call handler function information using the TRACE32 command (d.v %y.ll sys_call_table). In the following lectures, I will explain the core data structures of the Linux kernel along with key TRACE32 commands.

It explains in detail the practical commands used during the process of conducting real-world projects (the %l option: printing register information).

Provision of TRACE32 software for educational purposes and three Linux kernel memory dumps

In this lecture, we introduce the most advanced debugging method in the Linux system software industry—the way Qualcomm Linux kernel developers, at a world-class system semiconductor company, perform debugging—which is how to debug Linux kernel memory dumps. We provide advanced debugging techniques to debug Linux kernel memory using debugging programs such as TRACE32 and the Crash utility.

✅ You can download the educational TRACE32 program (simulator version) from the course curriculum. Students can use the TRACE32 program to load the kernel memory dumps provided in this course and follow along with the debugging process.

✅ You can directly download the Crash Utility, which is operated as an open-source project, and load kernel memory dumps for debugging. By utilizing the various features supported by the Crash Utility, you can directly debug kernel data structures and call stacks.

Based on my experience writing books and lecturing,
deeper and more detailed than anyone else!

I am the author of the unprecedented books on the 'Linux Kernel' and 'Arm Architecture (Armv8-A, Armv7-A)' in the domestic system software field. I am also an active developer who is well-versed in the latest system software trends (electric vehicles, system semiconductors-system software), and an educator who is most actively sharing knowledge in the system software field.

  • 'Structure and Principles of the Linux Kernel Learned Through Debugging' (2021, National Academy of Sciences Excellent Scholarly Book Award) Author

  • Author of 'The Structure and Principles of the Arm Architecture for System Software Development' (2024, National Academy of Sciences Outstanding Book Award)

  • Main Instructor for 'Programmers Dev Course: Linux System and Kernel Expert'

  • June 2022, Korea Computer Congress (KCC2022) - Tutorial Presentation [Conquering the Linux Kernel Using ftrace]

  • LG Electronics 'Linux Kernel' and 'Armv8 Architecture' internal instructor (including domestic and overseas developers) - (2020–2024)


I can confidently say that I am an educator who can explain the core functions of the Linux kernel better than anyone else in Korea.

Notes before taking the course

Precautions when using the TRACE32 program

  • The TRACE32 educational program can only be practiced in a Windows environment.

  • The TRACE32 educational program can only be used for &#39;educational purposes&#39; and cannot be modified or distributed for commercial use.

  • If you have any questions while using the TRACE32 educational program in this lecture, please be sure to ask the instructor.

Practice Environment and Provided Lecture Materials

  • Operating System and Version (OS): Raspberry Pi (Raspbian), Linux Kernel v6.1

  • TRACE32 Educational Program and Installation Guide Document (Lecture)

  • 3 Linux kernel memory dumps (vmcore)


Prerequisite Knowledge and Precautions

  • It is helpful to have a general understanding of how Linux operates.

  • It is recommended that you take the 'Structure and Principles of the Linux Kernel: Debugging - Basic [Author's Lecture Part 1-2]' course first if possible.

  • It will be easier to follow the class if you have knowledge of operating systems or computer architecture.

  • In-depth prior knowledge of the Linux kernel is not required.

Recommended for
these people

Who is this course right for?

  • A junior developer who wants to build expertise in system software, including system semiconductors and the electric vehicle sector (autonomous driving, infotainment).

  • A job seeker who wants to develop system software in fields such as system semiconductors and electric vehicles

  • An undergraduate student aiming to pursue graduate studies in the field of system software (memory, file systems, operating systems)

  • A developer from another field seeking to transition their career into system software.

Need to know before starting?

  • Operating System

  • C Language

  • Computer Architecture

Hello
This is austinkim

6,316

Learners

241

Reviews

96

Answers

4.9

Rating

22

Courses

Global Author & Linux System Software Developer (Arm, RISC-V Architecture)

A global author who has written unprecedented books on 'Arm Architecture (Armv8-A, Armv7-A)' and the 'Linux Kernel' in the domestic system software field (both books were selected as Excellent Academic Books by the National Academy of Sciences of the Republic of Korea), and is the first in Korea to author the book (in English) "Reverse Engineering Armv8-A Systems" through an international publisher (Packt). Above all, he is an active developer who is most well-versed in the latest system software trends (electric vehicles, system semiconductors-system software). He is also an educator who is most actively engaged in spreading knowledge within the system software field.

  • Author of the book (English) 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis', (Packt Publishing)

  • Author of 'Structure and Principles of Arm Architecture for System Software Development' (2024 National Academy of Sciences Outstanding Book Award)

  • Author of 'Structure and Principles of the Linux Kernel Learned Through Debugging' (2021, National Academy of Sciences Outstanding Scholarly Book Award)

  • Main Instructor for 'Programmers Dev Course: Linux System and Kernel Expert'

  • June 2022, Korea Computer Congress (KCC2022) - Tutorial Presentation [Conquering the Linux Kernel Using ftrace]

  • LG Electronics 'Linux Kernel' and 'Armv8 Architecture' internal instructor (including domestic and overseas developers) - (2020–Present)

I can confidently say that I am an educator who can explain the Linux kernel and Arm architecture (Armv8-A, Armv7-A) better than anyone else in Korea.

Lecture Inquiries: austindh.kim@gmail.com

Main Roadmap 🎯

'Arm for System Software Developers - basic course'

'Arm for System Software Developers - advanced course'

Linux kernel for system software developers - basic course

More

Curriculum

All

42 lectures ∙ (5hr 39min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

13 reviews

5.0

13 reviews

  • kdpark5057님의 프로필 이미지
    kdpark5057

    Reviews 2

    Average Rating 5.0

    5

    100% enrolled

    • redkyo008975님의 프로필 이미지
      redkyo008975

      Reviews 4

      Average Rating 5.0

      5

      100% enrolled

      • aceoftop1975님의 프로필 이미지
        aceoftop1975

        Reviews 121

        Average Rating 5.0

        5

        100% enrolled

        2024/07/30/Tue 20:25 I listened to the lecture well. I have now listened to all of Kim Dong-hyun's roadmap lectures. All lectures provide new information and knowledge, and I was impressed by the words to set aside about 15 days to solve OOM(out of memory). Thank you for sharing many stories from your own experiences and for explaining difficult Linux/Arm in an easy way. I am currently 50 years old (born in 1975). T.T When I was young, I bought a lot of Linux books and tried hard, but I didn't make any progress. After listening to Kim Dong-hyun's lectures, I learned a lot. I only had time on weekends, but I used my annual leave this week to listen to all the lectures. I listened to everything so quickly from Saturday the 27th until now, I think I should listen to it again.^^; Course period: Unlimited, so I think I will continue to listen to it if I want to listen to it again in a year. Now I plan to read the Linux/Arm book I bought as an ebook carefully. I don't have a writing Jeju, so I can't convey what I feel. Now I think I can make progress little by little about Linux. Thank you for the great lecture. If you make more lectures in the future, I will listen carefully. Have a nice day. Thank you.

        • yerinjeon9731님의 프로필 이미지
          yerinjeon9731

          Reviews 3

          Average Rating 5.0

          5

          62% enrolled

          • heecheolsong님의 프로필 이미지
            heecheolsong

            Reviews 21

            Average Rating 5.0

            5

            31% enrolled

            austinkim's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!

            $42.90