VScode 调试 linux内核

VScode 调试 linux内核

这里调试的 linux 内核是通过 Linux+SD卡(rootfs)运行的内核

gdb 命令行调试

编辑 /home/tyustli/.gdbinit 文件,参考 【GDB】 .gdbinit 文件

set auto-load safe-path /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit

在 linux 源码项目的根目录新建 .gdbinit 文件

target remote localhost:1234
b start_kernel
layout src
c

先启动 linux 内核,让其等待 GDB 连接

# 启动之后等待 GDB 连接
sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb -nographic \
-append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd /home/tyustli/code/open_source/busybox/rootfs.ext3 -s -S# -dtb  指定设备树,否则会失败

在编译 linux 的当前路径输入

arm-none-linux-gnueabihf-gdb vmlinux -se vmlinux

如果没有设置 /home/tyustli/.gdbinit 文件,那么对应的命令为

arm-none-linux-gnueabihf-gdb vmlinux -se vmlinux -x .gdbinit

即指定 .gdbinit 的文件为当前路径。需要注意的是,如果指定了 /home/tyustli/.gdbinit 文件,就不能加 -x .gdbinit

调试界面信息
在这里插入图片描述

VScode 调试

参考 qemu基础篇——VSCode 配置 GDB 调试

要想调试 kernel 只需要再添加一个 kernel 的配置即可

{"version": "0.2.0","configurations": [{// qemu 裸机调试配置"name": "qemu_bare","type": "cppdbg","request": "launch","program": "${workspaceFolder}/qemu_code/bare/example/0020_mmu/bsp.elf","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}/qemu_code/bare","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb","miDebuggerServerAddress": "localhost:1234",},{   // u-boot 调试配置"name": "u-boot","type": "cppdbg","request": "launch","program": "${workspaceFolder}/open_source/u-boot/u-boot","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}/open_source/u-boot","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb","miDebuggerServerAddress": "localhost:1234",},{   // linux kernel 调试配置"name": "linux_kernel","type": "cppdbg","request": "launch","program": "${workspaceFolder}/open_source/kernel/linux-6.5.7/vmlinux","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}/open_source/kernel/linux-6.5.7","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/home/tyustli/cross_tool/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gdb","miDebuggerServerAddress": "localhost:1234",}]
}

有一点需要注意,如果使用 vscode 调试,就不能指定 /home/tyustli/.gdbinit 文件,或者将 /home/tyustli/code/open_source/kernel/linux-6.5.7/.gdbinit 文件的内容清空

先在 start_kernel打好断点
在这里插入图片描述
先启动 linux 内核,让其等待 GDB 连接

# 启动之后等待 GDB 连接
sudo qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb -nographic \
-append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd /home/tyustli/code/open_source/busybox/rootfs.ext3 -s -S

启动调试
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/172341.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cross Site Scripting (XSS)

攻击者会给网站发送可疑的脚本,可以获取浏览器保存的网站cookie, session tokens, 或者其他敏感的信息,甚至可以重写HTML页面的内容。 背景 XSS漏洞有不同类型,最开始发现的是存储型XSS和反射型XSS,2005,Am…

Linux中shell脚本中的运算

目录 一、运算符号 二、运算指令 三、练习 一、运算符号 加法-减法*乘法/除法%除法后的余数**乘方自加一--自减一 <小于<小于等于>大于>大于等于等于ji&#xff0c;jji*jj*i/jj/i%jj%i 二、运算指令 (()) ##((a12)) let ##let a12 expr ##expr 1 2 …

【数据结构】交换排序

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈数据结构 &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 冒泡、快速排序 1. 冒泡排序2. 快速…

城市群(Megalopolis)/城际(inter-city)OD相关研究即Open Access数据集调研

文章目录 1 城市群/城际OD定义2 理论模型与分析方法2.1 重力模型 Gravity Model2.2 干预机会模型 Intervening Opportunities Model2.3 辐射模型 Radiation Model 3 Issues related to OD flows3.1 OD Prediction3.2 OD Forecasting3.3 OD Construction3.4 OD Estimation 4 OD …

基于单片机的智能电子鼻的设计

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…

source insight4菜单工具按钮变乱恢复

目录 1&#xff1a;问题现象2&#xff1a;修改方式2.1 找到config_all.xml2.2 修改config_all.xml 1&#xff1a;问题现象 在source insight4点击工具按钮的时候&#xff0c;把工具全部都折叠了&#xff0c;然后手动拉出来的时候就乱了。 2&#xff1a;修改方式 2.1 找到con…

【多线程面试题 三】、 run()和start()有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; run()和start()有什么区…

ffmpeg中examples编译报不兼容错误解决办法

ffmpeg中examples编译报不兼容错误解决办法 参考examples下的README可知&#xff0c;编译之前需要设置 PKG_CONFIG_PATH路径。 export PKG_CONFIG_PATH/home/user/work/ffmpeg/ffmpeg/_install_uclibc/lib/pkgconfig之后执行make出现如下错误&#xff1a; 基本都是由于库的版…

stm32的ADC采样率如何通过Time定时器进行控制

ADC采样率是个跟重要的概念. 手册上说可以通过Timer定时器进行触发ADC采样. 可我这边悲剧的是, 无论怎么样. ADC都会进行采样. 而且就算是TIM停掉也是一样会进行采样. 这就让我摸不着头脑了… 我想通过定时器动态更改ADC的采样频率. 结果不随我愿… 这到底是什么问题呢? 一…

哈希算法:如何防止数据库中的用户信息被脱库?

文章来源于极客时间前google工程师−王争专栏。 2011年CSDN“脱库”事件&#xff0c;CSDN网站被黑客攻击&#xff0c;超过600万用户的注册邮箱和密码明文被泄露&#xff0c;很多网友对CSDN明文保存用户密码行为产生了不满。如果你是CSDN的一名工程师&#xff0c;你会如何存储用…

uniapp实现webview页面关闭功能

实现思路&#xff1a; 1.关闭按钮是使用原生button添加的close属性。&#xff08;见page.json页面&#xff09; 2.监听关闭按钮的方法。&#xff08;onNavigationBarButtonTap&#xff09; 3.写实现关闭webview所有页面的逻辑。 废话不多说&#xff0c;直接上代码 1.page.…

【每日一题】合并两个有序数组

链接奉上&#xff1a;合并两个有序数组 目录 直接合并后排序&#xff1a;思路&#xff1a;代码实现&#xff1a; 双指针思路&#xff1a;代码实现&#xff1a; 直接合并后排序&#xff1a; 思路&#xff1a; 将nums2直接合并到nums1后边&#xff0c;并进行排序 代码实现&…

【多线程面试题 六】、 如何实现线程同步?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a; 如何实现线程同步&…

docker镜像仓库

Hlarbor harbor是一个开源的云原生镜像仓库&#xff0c; 它允许仓库用户存储&#xff0c;使用docker镜像。可以将harbor看做是私有的dockerhub&#xff0c;它提供了更新安全性和控制性&#xff0c; 让组织能够安全的存储和管理镜像。 harbor RBAC&#xff1a;基于角色访问控制…

html/css/javascript/js实现的简易打飞机游戏

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 视频浏览地址

ASP.NET WebApi 极简依赖注入

文章目录 环境服务类启动项注入使用依赖注入的优点 环境 .NET Core 7.0ASP.NET CoreVisual Studio 2022 服务类 public class T_TempService {public T_TempService(){}public void Test(){}}启动项注入 #region 依赖注入 builder.Services.AddTransient<T_TempService&g…

springBoot与Vue共同搭建webSocket环境

欢迎使用Markdown编辑器 你好&#xff01; 这片文章将教会你从后端springCloud到前端VueEleementAdmin如何搭建Websocket 前端 1. 创建websocket的配置文件在utils文件夹下websocket.js // my-js-file.js import { Notification } from element-ui // 暴露自定义websocket对…

NAT技术与代理服务器

目录 一、NAT与NAPT技术 1.NAT技术 2.NAPT技术 &#xff08;1&#xff09;四元组的唯一性 &#xff08;2&#xff09;数据的传输过程 &#xff08;3&#xff09;NAPT的缺陷 二、代理服务器 1.正向代理和反向代理 2.代理服务器的应用 &#xff08;1&#xff09;游戏加…

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 &#xff08;1&#xff09;、显示数据库 &#xff08;2&#xff09;、创建数据库 &#xff08;3&#xff09;、删除数据库 &#xff08;4&#xff09;、使用数据库 二、常用数据类型 &#xff08;1&#xff09;、数值类型 &#xff08;2&#xff0…

【云原生】portainer管理多个独立docker服务器

目录 一、portainer简介 二、安装Portainer 1.1 内网环境下&#xff1a; 1.1.1 方式1&#xff1a;命令行运行 1.1.2 方式2&#xff1a;通过compose-file来启动 2.1 配置本地主机&#xff08;node-1&#xff09; 3.1 配置其他主机&#xff08;被node-1管理的节点服务器&…