TOP
紅利積點抵現金,消費購書更貼心
Linux核心除錯實務
滿額折
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務
Linux核心除錯實務

Linux核心除錯實務

商品資訊

定價
:NT$ 800 元
優惠價
90720
庫存:4
下單可得紅利積點:21 點
商品簡介
作者簡介
目次

商品簡介

藉由實用工具與進階技術,對Linux kernel與kernel模組進行有效除錯!

Linux kernel是世界公認最好的作業系統核心。但是要對kernel進行除錯,則是一件相當複雜的工作。本書是學習一切高階kernel除錯的全面性指南。深入涵蓋許多領域,例如基於工具的除錯(debug)技術(printk與動態除錯框架),並展示如何使用Kprobes。涉及記憶體的bug往往是一場惡夢,我們用兩個章節的篇幅來講解針對記憶體除錯的工具與技術。當kernel賞你一個Oops時,該如何準確地解讀才能解開最根本的問題呢?這本書提供了解答。

並行性(concurrency)往往是一個複雜的主題,本書能幫助你確切地了解何謂資料競爭(data race),包括使用KCSAN來檢測這類問題。還有一些棘手的問題,無論是在除錯還是效能方面,都需要詳細的kernel層級追蹤;你將學習到如何使用Ftrace及其前端(frontend)的強大功能,還將會知道如何在kernel內部的GDB工具(KGDB)與許多其他工具,用於處理kernel lockup、hangs與可怕的kernel panic。

讀完本書,你將能掌握各種強大的kernel debug工具與技術,以及具有在何時間點使用適當工具和技術的敏銳能力。
你將學到的內容:
*探索基於工具的printk,以及功能強大的動態除錯框架(dynamic debug framework)
*使用靜態與動態的Kprobes,trap kernel/module 的函式
*使用KASAN、UBSAN、SLUB debug 和kmemleak捕捉kernel 的記憶體問題
*深入解譯Oops,並精準識別程式碼的行號位置
*了解資料競爭,並使用KCSAN捕捉難以捉摸的並行性(concurrency)問題
*利用Ftrace與trace-cmd詳細追蹤kernel流程
*撰寫自訂的kernel panic handler(處理常式),並檢測kernel lockup與hands
*使用 KGDB 單步執行,以及 debug kernel/module 的原始碼

作者簡介

Kaiwan 在 Linux 系統程式設計的各方面都貢獻良多,包括 Bash、C 語言的系統程式設計、Kernel 內部研究、裝置驅動程式與嵌入式 Linux 系統。他積極地參與商業/自由和開放原始碼軟體專案,包括Linux 作業系統的驅動程式,以及許多放在 GitHub 的小型專案。他現已從事相關工作將近30年,著有《Hands-On System Programming with Linux and Linux Kernel Programming》。同時,他也是一個業餘跑者。

目次

【PART 1 Kernel 除錯的簡介與方法】
chapter 1 軟體除錯概論
1.1 技術需求
1.2 軟體除錯 - 定義、起源與由來
1.3 軟體錯誤:真實案例
1.4 設定工作區
1.5 兩個 kernel 的故事
1.6 幾個簡單的 Debug 技巧提示
結論
chapter 2 Debug Kernel 的方法
2.1 技術需求
2.2 分類 bug type
2.3 Debug Kernel:方法不同的原因
2.4 概述 debug kernel 的不同方法
結論

【PART 2 Kernel 與驅動程式的除錯工具與技術】
chapter 3 透過檢測除錯:使用 printk 與其族類
3.1 技術需求
3.2 無所不在的 kernel printk
3.3 將 printk 用於除錯目的
3.4 使用 kernel 強大的動態 debug 功能
3.5 剩下的 printk 雜項字元
結論
chapter 4 透過Kprobes 儀器進行debug
4.1 了解 kprobes 基礎
4.2 使用 static kprobes - 傳統的探測方法
4.3 了解 ABI 的基本概念
4.4 使用 static kprobes - 範例 3 與範例 4
4.5 開始使用 kretprobes
4.6 Kprobes:限制性與不利因素
4.7 更簡單的方法:動態 kprobes 或基於 kprobes 的事件追蹤
4.8 透過 perf 和 eBPF 工具,對 execve() API 進行 trap
結論
chapter 5 Kernel 記憶體除錯問題初探
5.1 技術需求
5.2 記憶體到底出了什麼問題?
5.3 使用 KASAN 和 UBSAN 找到記憶體 bug
5.4 使用 Clang 編譯 kernel 和 module
5.5 捕捉 kernel 中的記憶體缺陷:比較與注意事項 (Part 1)
結論
chapter 6 再論 Kernel 記憶體除錯問題
6.1 技術需求
6.2 透過 SLUB debug 偵測 slab 記憶體損毀
6.3 使用 kmemleak 找出記憶體洩漏問題
6.4 捕捉 kernel 中的記憶體缺陷:比較與注意事項(Part 2)
結論
chapter 7 Oops!解讀 kernel 的 bug 診斷
7.1 技術需求
7.2 產生一個簡單的 kernel bug 和 Oops
7.3 介紹 Kernel Oops 以及所代表的意義
7.4 魔鬼藏在細節裡:解碼 Oops
7.5 協助判斷 Oops 位置的工具與技術
7.6 ARM Linux 系統上的 Oops 及使用 Netconsole
7.7 幾個實際的 Oops
結論
chapter 8 鎖的除錯
8.1 技術需求
8.2 上鎖與 debug 因鎖產生的 bug
8.3 上鎖:快速總結要點
8.4 使用 KCSAN 攔截 concurrency bug
8.5 一些實際案例:由於上鎖問題導致的 kernel bug
結論

【PART 3 額外的 Kernel 除錯工具與技術】
chapter 9 追蹤 Kernel 流程
9.1 技術需求
9.2 Kernel 追蹤技術:概論
9.3 使用 ftrace kernel 追蹤程式
9.4 使用 trace-cmd、KernelShark 與 perf-tools ftrace 前端工具
9.5 用 LTTng 和 Trace Compass 追蹤 kernel 的簡介
結論
chapter 10 Kernel Panic、Lockup 以及 Hang
10.1 技術需求
10.2 Panic!Kernel panic 時會發生什麼事?
10.3 撰寫自訂的 kernel panic 處理常式
10.4 偵測 kernel 中的 lockup 和 CPU 停止
10.5 採用 kernel 的掛起任務和工作佇列停止偵測器
結論
chapter 11 使用 Kernel GDB (KGDB)
11.1 技術需求
11.2 從概念上理解 KGDB 的運作
11.3 為 KGDB 建立 ARM target 系統和 kernel
11.4 使用 KGDB debug kernel
11.5 使用 KGDB debug kernel 模組
11.6 [K]GDB:一些提示和技巧
結論
chapter 12 再談談一些 kernel debug 方法
12.1 Kdump/crash 架構簡介
12.2 淺談 kernel 程式碼的靜態分析
12.3 Kernel code coverage 工具和測試框架簡介
12.4 其他:使用 journalctl、斷言 (assertions) 和警告
結論

索引

購物須知

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:90 720
庫存:4

暢銷榜

客服中心

收藏

會員專區