文章目录
- 一、Qemu
- 二、Gdb
- vscode 调试
- 三、RootFs
一、Qemu
qemu 虚拟机
Linux内核学习
Linux 内核调试 一:概述
Linux 内核调试 二:ubuntu20.04安装qemu
Linux 内核调试 三:《QEMU ARM guest support》翻译
Linux 内核调试 四:qemu-system-arm功能选项整理
Linux 内核调试 五:qemu简单使用测试
Linux 内核调试 六:qemu-system-arm仿真vexpress-a9
Linux 内核调试 七:qemu网络配置
Linux 内核调试 八:qemu使用initramfs文件系统
Linux 内核调试 九:Linux 内核调试环境搭建
Linux 内核调试 十:搭建ARM GDB的调试环境
$ sudo ip tuntap add dev tap0 mode tap
$ sudo ip link set dev tap0 up
$ sudo ip address add dev tap0 192.168.2.128/24
$ ifconfig eth0 192.168.2.120 netmask 255.255.255.0
# tap 模式
./qemu-system-arm -M vexpress-a9 -m 512M -kernel zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb vexpress-v2p-ca9.dtb -nographic -net nic -net tap,ifname=tap0,script=no,downscript=no
# user 模式
qemu-system-x86_64 -M pc -kernel bzImage -drive file=rootfs.ext2,if=virtio,format=raw -append "rootwait root=/dev/vda console=tty1 console=ttyS0" -net nic,model=virtio -net user -nographic
Linux 虚拟网络设备
qemu与宿主机网络通信配置
qemu虚拟机配置网络
二、Gdb
# 1、服务器B上启动 gdbserver
# 执行命令:gdbserver + A_IP:1234(端口号) + 执行程序名字 + 执行程序参数,如
gdbserver 1234 test # 其中1234为开启的端口,test为要调试的程序(注意服务器防火墙问题)
# 3、本机调试
# a、在本机A上执行:
gdb test
# b、进入gdb后输入:
target remote 服务器B的IP:端口
#c、连接成功后,在A电脑上就可以正常调试了
gdb远程调试
gdb远程调试
gdbserver使用教程
用图文带你彻底弄懂GDB调试原理
gdb调试常见命令详细总结(附示例操作)
GDB常用命令详解
vscode 调试
- launch.json
.vscode 下 launch.json ,配置调试信息。
// launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gdb debug",
"type": "cppdbg",
"request": "launch",
// "miDebuggerServerAddress": "172.18.25.30:1234",
"miDebuggerServerAddress": "127.0.0.1:1234",
"program": "${workspaceRoot}/vmlinux",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"logging": {
"engineLogging": false
},
"MIMode": "gdb"
}
]
}
Linux内核学习
三、RootFs
BuildRoot 围炉夜话
ramdisk文件系统的制作以及移植
# 制作镜像文件:
# 使用dd命令建立一个16MB的文件系统映像ramdisk
dd if=/dev/zero of=ramdisk bs=1Mcount=16
# 因为ramdisk只是一个块设备,只有将其格式化为特定的文件系统后才能使用,我们将其格式化ext2格式
mke2fs -F -v -m0 ramdisk
# 挂载ramdisk,并拷贝制作好的根文件系统到mnt目录下
sudo mount -o loop ramdisk mnt/