Linux GDB 调试_linux



文章目录

  • 一、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/