vscode+gdb调试linux

编译内核

 make meauconfig 后:

Kernel hacking  --->
    Compile-time checks and compiler options  --->
        [*] Compile the kernel with debug info
        [*]   Provide GDB scripts for kernel debugging
 [*] Kernel debugging

Processor type and features ---->
    [] Randomize the address of the kernel image (KASLR)

配置vscode

配置vscode的launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "qemu_bare",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/user/work_linux/linux-5.15.104/vmlinux",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "miDebuggerServerAddress": "localhost:1234",
        }
    ]
}

运行Qemu

编译x86_64平台的linux可使用如下脚本:

qemu-system-x86_64 \
    -m 1024M \
    -kernel ./linux-5.15.104/arch/x86_64/boot/bzImage \
    -initrd ./buildroot/output/images/rootfs.cpio \
    -nographic \
    -append "nokaslr console=ttyS0" \
    -S -s

-s 是 QEMU 的一个简短命令行选项,它等价于 -gdb tcp::1234,即设置 QEMU 在本地的 1234 端口上等待 gdb 的连接。

-S 是 QEMU 在启动虚拟机后立即暂停执行 CPU。

posted @ 2024-05-30 09:36  ouyang_wsgwz  阅读(50)  评论(0编辑  收藏  举报