kgdb调试内核的环境搭建与使用教程
来源:互联网 发布:his医疗软件 编辑:程序博客网 时间:2024/05/25 01:35
如何单步源码级调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大、逻辑复杂、与硬件交互的特性。因此,有着不同于应用程序的调试方法,据统计Linux内核开发者使用最普遍的调试方法是printk方法,而其他的方法大多是在特殊情况下才会使用。本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,观察变量、寄存器的值等。然而也有其限制条件,本文仅简单介绍使用串口的Kgbd的流程(kgdboc方式),除此之外还网卡方式即kdgboe方式,Kgdb调试原理及kgdboe方式配置请参阅博文《Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置》。
/**********************************************************************************************************************************/
原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/9117597,作者:gqb666/**********************************************************************************************************************************/
关键步骤:
一、配置Linux内核,使其支持KGDB。
依次进行如下配置:
$make menuconfig(下面配置为必须进行的)
配置成功后进行Linux内核的编译。make uImage并生成uImage拷贝到nfs/tftp服务器,等待u-boot下载内核或者直接烧到flash从flash上启动。
二、修改u-boot的启动参数bootargs以支持kgdb调试:
setenv bootargs 'console=ttyS0,115200n8 kgdboc=ttyS0,115200 kgdbwait …… nfsroot=……'
主要增加以上红色字体部分,指定kgdb使用开发板上的哪个串口,注意这里是串口名而不是设备文件/dev/ttyS0。
三、配置虚拟机与PC机的串口映射。比如博主的Vmware虚拟机使用usb转串口到linux下串口设备名为/dev/ttyS1(将在第五步使用)。可以通过mincom进行实际测试。
四、在虚拟机linux系统下使用minicom启动开发板的内核:方法如下:
tftp进行下载内核
使用bootm启动linux后会在下面输出信息处停下(要注意的是完成此步骤后务必要手工关闭该minicom会话,因为gdb远程连接时也需要此串口)等待gdb的连接:
截图来说明一下:五、使用gdb调试vmlinux文件。使用前述博文《在ubuntu10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)》移植的 arm-none-linux-gnueabi-gdb进行调试内核文件vmlinux。方法如下:
在linux内核源码根目录下创建一个.gdbinit文件,其内容为:
然后同样在Linux内核源码目录下运行如下命令:arm-none-linux-gnueabi-gdb ./vmlinux
不出意外的会有如下信息输出则说明已经连接成功,可以像gdb调试应用程序一样调试linux内核了。
截图:
- kgdb调试内核的环境搭建与使用教程
- 调试番外篇 - KGDB环境搭建与使用
- 用vbox+kgdb进行内核调试的环境搭建
- KGDB+VMware内核调试环境搭建
- 搭建virtualbox + kgdb内核调试环境
- 使用KGDB构建Linux内核调试环境
- 使用KGDB 进行内核调试(平台搭建和调试)
- KGDB环境搭建及调试
- KGDB环境搭建及调试
- 使用 KGDB 调试 Linux 内核
- 使用 KGDB 调试 Linux 内核
- 使用qemu + KGDB调试内核
- 使用 KGDB 调试 Linux 内核
- 使用KGDB调试Linux内核
- ARM-使用KGDB调试内核
- linux内核调试:kgdb,配置kgdb调试环境
- ubuntu环境下搭建kgdb调试环境
- VMware环境下用kgdb调试内核
- JavaScript设计模式之代理模式
- Hololens开发手记——Unity之World Anchor空间锚
- js插件获取当前所在的省市
- 我与python约个会:22.企业级开发基础3:类和对象
- 激光雷达定位(四)
- kgdb调试内核的环境搭建与使用教程
- 算法分析与设计第十四周:424. Longest Repeating Character Replacement
- kylin + Calcite + Saiku
- spring 前端使用ajax提交两个以上相同对象list到后台的处理
- WebView 在android中的使用详解
- 阿里云服务器 mysql远程连接时,出现连接不上的解决办法
- Android开发之获取网络类型(WIFI、2G、3G、4G)和运营商名称
- ubuntu 安装 mysql navicat
- CodeForces