0

0

Linux怎么开启内核调试_Linux kgdb与kdb调试环境配置【开发】

冰火之心

冰火之心

发布时间:2026-01-20 14:55:30

|

883人浏览过

|

来源于php中文网

原创

需手动配置内核启用kgdb或kdb:一、make menuconfig开启kgdb及串口支持并编译;二、修改grub添加kgdboc和kgdbwait参数;三、用gdb加载vmlinux并通过串口连接;四、启用kdb并用sysrq+g触发;五、验证配置、串口与中断。

linux怎么开启内核调试_linux kgdb与kdb调试环境配置【开发】

如果您希望在Linux内核中启用调试功能,以便对内核崩溃、异常行为或驱动逻辑进行深度分析,则需手动配置内核支持kgdb(Kernel GNU Debugger)或kdb(Kernel Debugger)。以下是完成该配置的具体步骤:

一、配置内核启用KGDB支持

Kgdb通过串口或网络将内核与GDB连接,允许在源码级调试内核执行流。需在编译内核前启用相关选项。

1、进入内核源码目录,运行 make menuconfig

2、依次展开 Kernel hacking → KGDB: kernel debugger,勾选 [*] KGDB: kernel debugger

3、启用串口通信支持:[*] KGDB: Serial console debugging,并确保 [*] Console on 8250/16550 and compatible serial ports 已启用。

4、保存配置并退出,执行 make -j$(nproc) 编译内核,随后安装新内核及模块。

二、配置内核启动参数启用KGDB

启动时需向内核传递调试参数,使其在初始化阶段挂起并等待GDB连接。

1、编辑GRUB配置文件 /etc/default/grub,修改 GRUB_CMDLINE_LINUX 行。

2、添加参数:kgdboc=ttyS0,115200 kgdbwait(假设使用串口ttyS0,波特率115200)。

3、运行 sudo update-grub(Debian/Ubuntu)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS)。

4、重启系统,内核将在启动早期暂停,并等待GDB通过串口连接。

三、在主机端使用GDB连接目标内核

需在另一台机器(或同一台机器的另一终端)运行GDB,加载vmlinux符号文件并连接目标内核。

1、确认已安装带Python支持的GDB:gdb --version 应显示 ≥7.6 且含 Python scripting enabled。

小羊标书
小羊标书

一键生成百页标书,让投标更简单高效

下载

2、启动GDB:gdb vmlinux(vmlinux为未压缩的带符号内核镜像)。

3、在GDB中执行:target remote /dev/ttyUSB0(若用USB转串口设备)或 target remote /dev/ttyS0(直连主板串口)。

4、连接成功后,可执行 info registersbtlist *$pc 等命令查看状态。

四、启用KDB本地内核调试器

KDB是内建于内核的轻量级交互式调试器,无需外部GDB,适合快速检查寄存器、内存和任务状态。

1、在 make menuconfig 中启用:Kernel hacking → Kernel debugging → [*] KDB interactive kernel debugger

2、确保同时启用:[*] Magic SysRq key[*] Debug filesystem

3、编译并安装内核后,在运行中的系统按 Alt+SysRq+g 触发KDB(需已启用SysRq)。

4、进入KDB提示符后,可输入命令如:md 0xffff888000000000 10(内存dump)、ps(列出进程)、bt(当前CPU回溯)。

五、验证调试环境是否就绪

需确认内核已正确加载调试符号、串口通信通畅、中断触发机制有效,方可开展实质性调试。

1、检查内核配置是否生效:zcat /proc/config.gz | grep -i "kgdb\|kdb"(若启用CONFIG_IKCONFIG_PROC)。

2、确认串口设备存在且权限正确:ls -l /dev/ttyS0,必要时加入 dialout 组:sudo usermod -a -G dialout $USER

3、测试串口连通性:在目标机运行 stty -F /dev/ttyS0 115200,主机用 screen /dev/ttyUSB0 115200 发送字符观察回显。

4、触发一次软中断验证KDB响应:echo g > /proc/sys/kernel/sysrq,观察是否进入KDB shell。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

434

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

419

2023.08.08

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

538

2024.05.29

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

235

2023.12.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1542

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

716

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

300

2023.06.30

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.3万人学习

Git 教程
Git 教程

共21课时 | 4.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号