内核调试 && 应用程序调试

发布时间:2024年01月19日

前言

内核调试和应用程序调试,底层都是使用 gdb,只不过受限于环境、系统等因素,使用了不同的辅助程序(设备)罢了。

调试方法

内核调试的两种方法:OpenOCD + JTAG、qemu
应用程序调试的两种方法:gdb、gdbserver

OpenOCD 详见《OpenOCD 通过 JTAG 调试树莓派》这篇文章。

qemu 调试内核

qemu 使用 -s 就相当于在 localhost:1234 端口上启动一个 gdbserver,等待 gdb 连接。
在这里插入图片描述
左侧窗口启动 qemu,配合 -s 参数启动 gdbserver。右侧窗口启动 gdb,连接 gdbserver,调试内核。

进阶:
使用 vscode 进行调试更为方便
内核源码目录下,.vscode 目录中,创建 launch.json 文件,内容为

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "启动 gdb",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/vmlinux",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/home/liyongjun/project/board/buildroot/Vexpress_2/host/bin/arm-linux-gdb",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "targetArchitecture": "ARM",
            "stopAtConnect": true,

        }
    ]
}

在这里插入图片描述
vscode 点击 【启动 gdb】,代码停止在 0x60000000 处,接着就可以使用 vscode 进行单步、打断点等调试。

gdb 调试应用程序

在这里插入图片描述

gdbserver 调试应用程序

在这里插入图片描述

文章来源:https://blog.csdn.net/lyndon_li/article/details/135391897
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。