VSCode gdb 调试 qemu u-boot 的方法

这篇具有很好参考价值的文章主要介绍了VSCode gdb 调试 qemu u-boot 的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • 最近使用 VS Code GDB 调试 qemu,有了一点收获,u-boot 编译后生成了一个 elf 文件:u-boot,是否也可以调试一下?

  • 为何需要 VS Code GDB 调试,直接 gdb 调试不就可以了吗?答案就是:VS Code 可以界面调试,命令行调试会枯燥很多

环境

  • 使用 qemu,就是不需要板子

  • win10 64位 VMware Workstation Pro 16

  • ubuntu 20.04

  • qemu (虚拟ARM开发板),qemu arm64 平台

  • u-boot : u-boot-2023.04

  • gcc 交叉编译工具链:gcc version 12.2.1 20230401

目标

  • 基于 qemu,VS Code GDB,界面调试 u-boot,了解 u-boot 的启动流程

  • qemu:不需要硬件电路板支持,当前一些启动初始化流程可能与实际电路板存在差异,所以目标就是摸清楚 u-boot 的启动流程,重在搞清楚 u-boot 启动与初始化流程。

  • VS Code,这里重在界面调试,类似于 eclipse 那样的,可以源码调试

  • GDB:是一个强大的调试工具

编译 u-boot

  • 配置文件:configs/qemu_arm64_defconfig

  • 生成配置:make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- qemu_arm64_defconfig

  • 【备注】:当前 u-boot-2023.04 ARM 与 ARM64 没有分开,所以 ARCH=arm,而不是 ARCH=arm64

  • 开始编译: make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-

  • 生成的产物: u-boot.bin:二进制文件, u-boot: elf 可执行文件,默认包含 debug 信息

配置 VS Code gdb

  • 当前 是 Win10 下 VS Code 通过 SSH 连接 VM虚拟机中的 ubuntu,如果本地是 ubuntu 系统,应该就不需要 SSH 远程连接

  • VS Code 安装 gdb 调试插件

VSCode gdb 调试 qemu u-boot 的方法

  • 【备注】gdb 这个插件,好像不需要,确认下左边栏 是否有个 DEBUG 调试按钮吧,好像是 VS Code 自带的。

  • 配置 VS Code 调试:点击 【设置】的按钮,会提示选择某个调试器,这里随便选择一个,然后就会出现一个 .vscode/launch.json 文件

  • 修改 launch.json 文件内容如下

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "uboot-debug",
            "type": "cppdbg",
            "request": "launch",
            "miDebuggerServerAddress": "127.0.0.1:1234",
            "miDebuggerPath": "/home/zhangsz/linux/tools/gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb",
            "program": "${workspaceFolder}/u-boot",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "logging": {
                "engineLogging": false
            },
            "MIMode": "gdb",
        }
    ]
}
  • 注意点一:"miDebuggerPath": "/home/zhangsz/linux/tools/gcc-linaro-12.2.1-2023.04-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb",,这里设置 gcc gdb 的执行路径,全路径即可,这里的 gdb,来自 gcc version 12.2.1 20230401 交叉编译工具链

  • 注意点二:"program": "${workspaceFolder}/u-boot",,这里选择 u-boot,也就是 ELF 文件,而不是 u-boot.bin 二进制文件

  • 注意点三:"stopAtEntry": true,,这里选择 所有 的 执行 入口函数,都有断点停下来,否则可能 u-boot 无法调试

qemu 启动与调试脚本

  • qemu 启动脚本:qemu.sh,可以确认 u-boot 是否可以正常启动
#!/bin/bash
qemu-system-aarch64 -machine virt \
        -nographic \
        -m 512M \
        -cpu cortex-a57 \
        -kernel u-boot \
  • qemu 调试调试脚本,qemu-debug.sh,执行此脚本,可以进入 qemu 调试
#!/bin/bash
qemu-system-aarch64 -machine virt \
        -nographic \
        -m 512M \
        -cpu cortex-a57 \
        -kernel u-boot \
        -s -S

调试方法

  • 执行 qemu-debug.sh,此时会卡住,也就是 qemu 处于【冻结】状态

  • 点击 调试图标的 【运行】按钮:

VSCode gdb 调试 qemu u-boot 的方法

  • 进入调试界面:

VSCode gdb 调试 qemu u-boot 的方法

  • 此时可以加断点进行调试,可以单步【F11】或者 【F10】进行调试

VSCode gdb 调试 qemu u-boot 的方法

  • 如此, VS Code gdb 源码调试 u-boot 的环境搭建成功了

备注

  • 好像 u-boot 有一段 重定位的操作,经过重定位后, VS Code gdb 就无法正常加人断点了,也就是没有了调试符号与信息,这部分后续再梳理一下。

  • 当前的 VS Code gdb 界面源码调试 u-boot,可以从 reset 开始,单步【F11】配合【F10】与 手动断点,了解 u-boot 的第一阶段的启动流程,感觉对熟悉 u-boot 启动流程 还是有点用处。

小结

  • VS Code GDB 调试功能,感觉有点像专业的 Visual Studio 的感觉了,嵌入式软件可以调试,这本身就是一件好事,利于熟悉代码执行流程、问题定位等。

  • 调试过程中,有寄存器、局部变量、断点、【监视】watch 等窗口,可以观察程序执行的当前状态,很有用,至少比 gdb【命令行】调试起来舒服与高效文章来源地址https://www.toymoban.com/news/detail-512171.html

到了这里,关于VSCode gdb 调试 qemu u-boot 的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 终端/Vscode + GDB调试C++程序

    CMakeLists中需要设置编译类型为Debug 下载gdb调试器 在终端使用gdb调试程序 然后进入(gdb)命令行 (gdb) set args … : 设置程序运行输入的参数 (gdb) break file_path:row_number : 设置断点位置 (gdb) run : 启动调试 (gdb) next : 下一步(不进入函数) (gdb) step : 下一步(进入函数) (gdb) continue : 继

    2024年02月04日
    浏览(39)
  • VSCode +gdb+gdbserver远程调试arm开发板

    从ARM官网下载gcc-arm编译器, 编译器中自带gdb和gdbserver,可以省去自己编译 。 注:gdb是电脑端程序,gdbserver是arm开发板程序 arm官网链接:Arm GNU Toolchain Downloads – Arm Developer 下载arm-gcc版本10.3在开发板上运行提示lib版本错误,所以下载了版本10.2 也可以直接把编译器文件夹下的

    2024年02月07日
    浏览(62)
  • 详细讲解移植u-boot.2022.10版本移植到开发板基本方法

     大家好,我是ST​。​ 今天给大家讲一讲如何将u-boot.2022.10版本移植到imx6ull开发板上。 环境 选项 内容 编译主机 UbuntuLTS 18.04 目标板 ATK I.MX6ULL(512MB DDR3 + 8GB EMMC) u-boot版本 2022.10 交叉编译工具链 gcc-linaro-7.5.0-2019.12-i686_arm-linux-gnueabihf 一、u-boot编译环境准备 1.u-boot源码包下载

    2024年02月11日
    浏览(53)
  • F1C200S/F1C100S修改U-BOOT调试串口为UART1(PD3,PD4)

    此处用的uboot是荔枝派nano的 可以从荔枝派的仓库拉取 修改好的在这 查看串口挂载总线 查看数据手册 根据总线图可以看出串口是挂载在APB总线上面的 找到总线时钟设置部分 使能UART1控制器时钟 原本以为要改这,但是后来发现不需要修改。。。 设置GPIO引脚复用功能 直接pd

    2024年02月14日
    浏览(47)
  • VSCode 默认在DEBUG CONSOLE调试无法输入输出 gdb调试 解决方案 及Windows上C/C++环境配置

            从零重新安装的VSCode,无设置和其他插件,Win10系统,MinGW g++及gdb在环境变量中,发现VSCode调试C/C++程序时永远启用DEBUG CONSOLE而不是集成终端TERMINAL:         TERMINAL中只有launch.json中提供的参数启动debug的只读内容,无法进行输入输出,而cout输出的内容在DEBU

    2024年03月20日
    浏览(43)
  • 【linux】“gdb“调试方法与技巧

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门到精通 🎉代码仓库:小智的代码仓库 gdb是一款开源的、功能强大的调试器,它可以用于调试多种编程语言,如C、C++、汇编语言等。gdb可以帮助开发者在程序运行时进行调试,并找到程序

    2024年02月16日
    浏览(36)
  • arm开发板 GDB远程调试方法

    1.在linux下开发,免不了使用gdb调试,但是linux下开发嵌入式,都是跑在ARM板子上的,网上有很多GDB的基础教程,但是能在ARM开发板用的时候,会有各种问题。 比如:*.cpp: No such file or directory.这是因为用gcc编译的时候,代码还是在本地,并没有在arm平台上来。 所以说还是有必

    2024年02月12日
    浏览(37)
  • Linux环境下gdb调试方法与演示

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境: centos7 如果还未安装gdb的话,输入下面命令进行安装即可: 首先,gd

    2024年02月07日
    浏览(34)
  • 调试工具_gdb使用教程

    目录 一. 环境介绍 二. gdb指令 1. 启动调试 2. 退出调试 3. 查看代码  4. 运行程序  5. 打断点 6. 查看断点 7.  删除断点 8.  逐过程调试 9. 逐语句调试 10.  查看变量 11. 常显示变量(监视) 12. 取消常显示变量 13. 运行到指定行 14. 执行完当前函数的剩余部分 15. 执行到下一个断点

    2024年02月15日
    浏览(60)
  • 使用gdb调试Python进程

    有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump。例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到哪行Python代码呢?这时就需要祭出gdb了。 主要是三步: 1)确保你的gdb版本=7 2)安装python-debuginfo包(如:python-debuginfo-2.6.6-2

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包