gdb调试内核

news2024/12/26 0:14:49

1、设置内核配置

CONFIG_KGDB=y, CONFIG_DEBUG_INFO = y, CONFIG_FRAME_POINTER=y,CONFIG_STRICT_KERNEL_RWX is not set 屏蔽掉该选型
在这里插入图片描述
然后重新给板子烧录内核镜像

2、进入uboot,设置bootargs,添加kgdboc参数

setenv bootargs 'mem=512M console=ttyAMA0,115200n8 noinitrd ubi.mtd=4 root=ubi0:ubifs kgdboc=ttyAMA0,115200n8 kgdbwait rootfstype=ubifs rw init=/linuxrc mtdparts=spi0.0:4m(boot),128k(env),2m(dtb),20m(kernel),-(rootfs)'

在这里插入图片描述

3、kgdb相关操作

kgdb页面的相关命令:
在这里插入图片描述
输入kgdb,进入kgdb模式
在这里插入图片描述

然后断开开发板的串口连接,把串口连接到虚拟机
在这里插入图片描述
执行vmlinux

sudo ../../../../../../vs-linux/x86-arm/gcc-linaro-7.5.0-aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb ./vmlinux
set serial baud 115200
target remote /dev/ttyUSB2 // 这里可能是USB0或者1或者2,都试一遍就行了
set detach-on-fork on //要加上这个,不然后面continue时会卡住

在这里插入图片描述

出现问题

1、gdb的时候,第二次step就会卡主
解决方法:打补丁

参考文章:https://www.byteisland.com/arm64-%e7%9a%84-linux-%e5%86%85%e6%a0%b8-kgdb-kdb-%e8%b0%83%e8%af%95/

Patch 如下:

Subject: [PATCH] KERNEL: arm64, debug: disable interrupts while a software
 step is enabled

This patch enforce interrupts to be masked while single stepping. Without
this patch, we will alway fall into arm64/kernel/entry.S while issue step
or next operate.
---
 arch/arm64/kernel/kgdb.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index bcac81e..e83b960 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -23,6 +23,10 @@
 #include <linux/kdebug.h>
 #include <linux/kgdb.h>
 #include <asm/traps.h>
+#include <asm/ptrace.h>
+
+
+static DEFINE_PER_CPU(unsigned int, kgdb_pstate);

 struct dbg_reg_def_t dbg_reg_def[DBG_MAX_REG_NUM] = {
        { "x0", 8, offsetof(struct pt_regs, regs[0])},
@@ -188,6 +192,9 @@ int kgdb_arch_handle_exception(int exception_vector, int signo,
                err = 0;
                break;
        case 's':
+
+               __this_cpu_write(kgdb_pstate, linux_regs->pstate);
+               linux_regs->pstate |= PSR_I_BIT;
                /*
                 * Update step address value with address passed
                 * with step packet.
@@ -229,6 +236,17 @@ static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int esr)

 static int kgdb_step_brk_fn(struct pt_regs *regs, unsigned int esr)
 {
+       unsigned int pstate;
+
+       if (!kgdb_single_step)
+               return DBG_HOOK_ERROR;
+       kernel_disable_single_step();
+
+       pstate = __this_cpu_read(kgdb_pstate);
+       if (pstate & PSR_I_BIT)
+               regs->pstate |= PSR_I_BIT;
+       else
+               regs->pstate &= ~PSR_I_BIT;
        kgdb_handle_exception(1, SIGTRAP, 0, regs);
        return 0;
 }
--
2.7.4

问题的原因在于 kgdb 在断点处没有关闭处理器的中断能力,在单步执行的时候处理器会接收中断信号,比如时钟中断,从而转向中断处理,正如上面第一个表格呈现的那样。所以修复方法就是单步执行的时候关闭 cpu 的中断处理机制,continue 的时候恢复中断处理。

2、执行continue时,会卡主
进入uboot界面,设置bootargs的值,添加earlycon=uart8250,mmio32,0xfeb50000,nokaslr
nokaslr 禁止内核地址随机化

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通付盾WAAP网络与数据安全Agent深度解析

引言&#xff1a; ​随着现代Web应用程序的发展、应用程序环境和威胁的代际转变&#xff0c;应用的去中心化和分布式趋势明显&#xff0c;Bot和自动攻击的日益复杂化&#xff0c;移动应用使用量的增加和现代应用开发带来的API端点的激增&#xff0c;极大地扩展了威胁面&#x…

安达发|汽车零配件在生产上常常会遇到哪些困难?

汽车零配件在生产上常常会遇到许多困难&#xff0c;这些困难涉及到技术、质量、成本和供应链等多个方面。以下是一些常见的困难及其解决方案&#xff1a; 1.技术难题&#xff1a;汽车零配件的生产需要高度的技术支持&#xff0c;尤其是在新材料、新工艺和新设备的应用上。解决技…

多模态模型的语言幻觉和视觉幻觉

HALLUSIONBENCH: You See What You Think?Or You Think What You See? An Image-Context Reasoning Benchmark Challenging for GPT-4V(ision),LLaVA-1.5, and Other Multi-modality Models 论文链接 github地址 论文中提出大的多模态模型出现“语言幻觉”和视觉错觉由下面…

媒介盒子分享:提升软文转化率的秘诀

哈喽大家好&#xff0c;今天盒子来和大家分享的干货内容是如何提升软文转化率。 优质内容能够打动消费者&#xff0c;促使消费者完成购买行为&#xff0c;这就是软文的作用&#xff0c;软文想要提升转化率&#xff0c;要做好以下五个关键点。 一、 把握用户需求 只要把握用户…

MobaXterm使用VNC远程操作ubuntu桌面

目录 1 在ubuntu中安装vnc 2 设置ubuntu远程连接 3 MobaXterm中连接ubuntu的vnc 1 在ubuntu中安装vnc 参考&#xff1a;Ubuntu18.04~Ubuntu22.04安装并配置VNC_ubuntu安装vnc-CSDN博客 大体流程就是在ubuntu中安装vnc&#xff0c;设置密码&#xff0c;然后配置服务&#x…

Linux(CentOS)安装MySQL教程

主要参考链接 教程 1. 准备工作 1.1 安装CentOS虚拟机 教程点击 1.2 将CentOS虚拟机设置为静态IP&#xff0c;否则你每次重启虚拟机后连接数据库都要重新查IP 教程点击 1.3 如果有安装过MySQL&#xff0c;请先卸载MySQL 教程点击 1.4 虚拟机执行命令su切换到root账号(输…

「图像 cv2.seamlessClone」无中生有制造数据

上一篇博客【「图像 merge」无中生有制造数据 】写的是图片直接融合&#xff0c;此方法生成的图片相对而言比较生硬&#xff0c;虽然目标图片已经透明化处理过了&#xff0c;但是生成的图片依旧很假 除了上述上述的图片叠加融合之外&#xff0c;还有一种更加自然的融合方法&…

Java 性能优化之直接使用成员变量 VS 拷贝副本

背景 刷到一个大佬的 CSDN 博客&#xff0c;仔细看了一下性能优化专栏。联想到我们的日常开发工作&#xff0c;由于业务比较简单&#xff0c;很容就忽略性能问题。但是&#xff0c;性能优化的一下常见思路&#xff0c;也早有耳闻。看了一个 Java 性能优化的方法 「减少操作指令…

最新版一媒体7.3、星媒体、皮皮剪辑,视频MD ,安卓手机剪辑去重神器+搬运脚本+去视频重软件工具

最新版一媒体app安卓版介绍&#xff1a; 这是一款功能强大的视频搬运工具&#xff0c;内置海量视频编辑工具&#xff0c;支持一键智能化处理、混剪、搬运、还能快速解析和去水印等等&#xff0c;超多实用功能等着您来体验&#xff01; 老牌手机剪辑去重神器&#xff0c;用过的…

导轨在数控机床中起哪些作用?

数控机床导轨是数控机床中重要的组成部分&#xff0c;其主要作用有以下几个方面&#xff1a; 1、导向和承载作用&#xff1a;数控机床的导轨是机床各部件运动的导向轨道&#xff0c;它引导机床各部件按照规定的轨迹和速度进行运动&#xff0c;同时承受和分散运动部件的重力和切…

The Sandbox 与 hi 建立合作伙伴关系

我们很高兴地宣布&#xff0c;Web 3 Neo-Banking 应用程序已正式宣布与 The Sandbox 达成合作。它将允许用户使用 hi 借记卡在店内和线上消费原生通证 SAND。 hi 为数百万人提供了一种新的 SAND 消费方式&#xff0c;使持卡人能够使用 hi 借记万事达卡在店内和线上的精选商户使…

VScode 全局搜索快捷键Ctrl+Shift+F失效 衝突

主要的原因是搜狗输入法的&#xff0c;简体和繁体的切换快捷键冲突了 去掉输入法的切换快捷键

CLion 2023.2.2(C ++ IDE智能代码编辑器)

CLion 2023是一款跨平台C/C集成开发环境&#xff08;IDE&#xff09;。它为Mac用户提供了高效的编程体验&#xff0c;帮助程序员们在Mac平台上进行C/C开发。 CLion 2023支持多种编译器和调试器&#xff0c;并具有强大的代码分析和导航功能。它还为用户提供了许多便捷的工具和插…

Cpolar和Qchan的使用与轻量级搭建:构建独特的个人图床并保护隐私

文章目录 前言1. Qchan网站搭建1.1 Qchan下载和安装1.2 Qchan网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar云端设置2.2 Cpolar本地设置 3. 公网访问测试总结 前言 图床作为云存储的一项重要应用场景&#xff0c;在大量开发人员的努力下&#xff0c;已经开发出大…

6.OsgEarth加载倾斜摄影

愿你出走半生,归来仍是少年&#xff01; 三维场景中常用的地表模型包含倾斜摄影&#xff0c;通过CC处理出来的倾斜摄影是一个通过文件夹进行分块的&#xff0c;然后通过元数据记录了其空间位置信息&#xff08;原点&#xff09;。 本文通过解析metadata.xml文件后进行多块情况的…

Handler原理机制解析,Android开发中的重要性

Handler在android程序开发中使用的非常频繁、我们知道android是不允许在子线程中更新UI的&#xff0c;这就需要借助Handler来实现&#xff0c;那么你是否想过为什么一定要这个这样子做呢&#xff1f;而且Handler的内部消息处理机制究竟是什么样的呢&#xff1f;Handler的原理是…

Redis(11)| 持久化AOF和RDB

一、AOF&#xff08;Append Only File&#xff09; Redis 每执行一条写操作命令&#xff0c;就把该命令以追加的方式写入到一个文件里&#xff0c;然后重启 Redis 的时候&#xff0c;先去读取这个文件里的命令&#xff0c;并且执行它。 注意&#xff1a;只会记录写操作命令&am…

YOLOv7输出COCOmAP指标:输出自定义数据集中small、medium、large大中小目标的mAP值S,M,L指标,适用于自定义数据集

💡更多改进内容📚可以点击查看:YOLO改进原创目录 | 老师联袂推荐🏆 💡🚀🚀🚀内含改进源代码,按步骤操作运行改进后的代码即可,内附代码💡更方便的统计更多实验数据,方便写作 芒果改进 | YOLOv5 输出自定义数据集中 S,M,L指标大中小目标的mAP值 点这篇链…

华山编程培训中心——工业相机飞拍

飞拍功能是一种高速运动图像采集技术&#xff0c;通过降低相机的曝光时间来拍摄快速移动的对象&#xff0c;以提高工作效率和加快生产速度。下面视频演示工业相机飞拍&#xff1a; 上位机控制工业相机飞拍演示 一. 飞拍对相机硬件的要求 全局快门相机&#xff1a;飞拍要求相机…

树结构及其算法-二叉查找树

目录 树结构及其算法-二叉查找树 C代码 树结构及其算法-二叉查找树 二叉树在建立的过程中是根据“左子树 < 树根 < 右子树”的原则建立的&#xff0c;因此只需从树根出发比较键值即可&#xff0c;如果比树根大就往右&#xff0c;否则往左而下&#xff0c;直到相等就找…