源码书籍推荐

Rust

oldlinux

《Linux内核0.11完全注释》0.11

Bochs

qemu+gdb

调试 Linux 最早期的代码

网上修改版本:https://github.com/yuan-xy/Linux-0.11

ubuntu16.04.7

1
2
3
4
5
6
7
8
# 带UI启动qemu
qemu-system-x86_64 -m 16M -boot a -fda Image -hda $(HDA_IMG) -s -S

# 其他终端启动gdb
gdb tool/system
target remote :1234

# VSCode ssh远程连接后启动调试

launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb-0.11",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/Linux-0.11-master/tools/system",
"miDebuggerServerAddress": "127.0.0.1:1234",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/Linux-0.11-master",
"environment": [],
"externalConsole": false,
"MIMode": "gdb"
}
]
}

vscode打印内存地址数据,调试控制台

1
2
3
4
# 执行gdb命令x,打印0x0处内存,打印32字节
# xb,字节(默认)
# xw,4字节
-exec x/32xb 0x0

正式源码下载

《Linux内核源代码情景分析》 2.4.0

《Linux Kernel Development》2.6

qemu+gdb