二、Qemu+Vscode调试内核

编译内核、busybox、配置Qemu参考:Qemu调试内核

一、修改启动脚本

1、修改Qemu启动脚本

#! /bin/sh

qemu-system-aarch64 \
    -machine virt,virtualization=true,gic-version=3 \
    -nographic \
    -m size=1024M \
    -cpu cortex-a72 \
    -smp 2 \
    -kernel Image \
    -drive format=raw,file=rootfs.img \
    -append "root=/dev/vda rw nokaslr" \
    -s \
    -S

# nokaslr 是关闭随机地址,gdb调试随机地址导致无法正常调试
# -s 是-gdb tcp::1234 的简写,如果需要换端口可以用-gdb tcp::1234替换-s参数
# -S 是freeze cpu at startup的指令,也就是kernel 启动时就挂起,等待调试连接,如果不需要调试内核启动,这个参数也可以去掉

二、配置vscode

1、创建编辑 .vscode/launch.json

将文件创建在内核文件夹
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "kernel debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/vmlinux",
            "cwd": "${workspaceFolder}",
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb-multiarch",
            "miDebuggerServerAddress": "localhost:1234"
        }
    ]
}

三、调试内核

1、打断点init/main.c

start_kernel是内核入口

在这里插入图片描述

2、启动Qemu

在这里插入图片描述

3、vscode开始调试

(1)方法1

在这里插入图片描述

(2)方法2

在这里插入图片描述

相关推荐

  1. 内核调试方法

    2024-07-11 15:40:07       22 阅读
  2. Linux内核调试之如何用kdb调试

    2024-07-11 15:40:07       32 阅读
  3. Linux内核 -- ftrace 调试工具培训

    2024-07-11 15:40:07       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 15:40:07       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 15:40:07       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 15:40:07       58 阅读
  4. Python语言-面向对象

    2024-07-11 15:40:07       69 阅读

热门阅读

  1. 学习小记-使用Redis的令牌桶算法实现分布式限流

    2024-07-11 15:40:07       22 阅读
  2. 梯度下降算法的原理

    2024-07-11 15:40:07       22 阅读
  3. pytorch的axis的理解

    2024-07-11 15:40:07       22 阅读
  4. 搭建基于 ChatGPT 的问答系统

    2024-07-11 15:40:07       22 阅读
  5. C语言 将两个字符串连接起来,不用strcat函数

    2024-07-11 15:40:07       19 阅读
  6. ES6 Generator函数的语法 (七)

    2024-07-11 15:40:07       20 阅读
  7. git的下载流程,及使用方法,官网地址怎么找?

    2024-07-11 15:40:07       20 阅读
  8. 线程冲突案例演示

    2024-07-11 15:40:07       28 阅读