操作系统一些知识
no_std开发
一个简单的hello程序,就有47个系统调用
1
2
strace ./main.exe
1
2
3
#![no_std]
#![no_main]

pwndbg 调试器
syscall
迷你堆分配器
handler table
调试内核开发
为什么要调试内核
- 内核bug = 整个系统崩溃 (Kernel Panic / Oops)
- 没有printf 和 gdb
- 驱动开发
- 单步跟踪
内核调试方法
| 方法 | 优势 | 局限 |
|---|---|---|
| printk | 简单直接 | 需要重新编译,信息有限 |
| ftrace | 动态跟踪 | 学习曲线陡峭 |
| GDB + QEMU | 源码级调试,断点+单步 | 需要虚拟环境 |
| crash / kdump | 事后分析coredump | 仅限崩溃场景 |
| /proc /sys | 运行时观察 | 只读,粒度粗 |
QEMU + GDB

- srcipt选项甚至可以让你执行gdb的py脚本
