arm-linux-gdb+ddd+kgdb

调试番外篇 - KGDB环境搭建与使用 From: 内核&调试调试 调试番外篇 - KGDB环境搭建与使用测试环境宿主机环境:ubuntu 12.04 + linux kernel 2.6.32 目标机环境:ubuntu 12.04 + gdb + minicom 虚拟机:VirtualBox 4.3.10 1、安装VirtualBox新建一个标准的虚拟机镜像就OK!然后加载ISO一步一步安装就行!(磁盘大小最好稍微大点 阅读详情
一、linux主机需要安装的软件
(1) 安装patch工具
# apt-get install quilt
(2) 安装DDD
# apt-get install ddd
(3) 编译、安装arm-linux-gdb
Ubuntu自带的GDB工具是基于X86的,需要自己编译ARM平台的GDB工具
把光盘中的gdb-6.7.tar.bz2拷贝到linux主机/home/smb_share
# cd /home/smb_share
# tar -jxvf gdb-6.7.tar.bz2
# cd gdb-6.7/
# ./configure --target=arm-linux
// 编译
# make
make时会出现error,把出错文件所在目录的Makefile中的WARN_CFLAGS中“-Werror”这个选项删除掉即可。
// 安装到家目录的bin/下面,改名为arm-linux-gdb
# cp gdb/gdb ~/bin/arm-linux-gdb
二、给linux内核打kgdb补丁
(1)把光盘中的/work/debug/kgdb-2_linux2_6_22_uprev.tar.bz2拷贝到linux主机上/home/smb_share,解压出kgdb-2目录。
(2)# cd /home/smb_share/kernel/linux-2.6.22.6
// 拷贝到内核目录,改名为patches
# cp -rf /home/smb_share/kgdb-2 ./patches
 
// 打补丁
# quilt push -a
 
(3) 修改笔误 include/asm-arm/system.h第380行
添加文件arch/arm/mach-s3c2410/kgdb-serial.c
参考:《完全手册》P368。
 
(4) 修改内核配置文件
参考:《完全手册》P370页。
 
(5) 编译内核
# make
# cd arch/arm/boot/
# mkimage -n 'linux-2.6.30.4' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d zImage uImage
 
(6)把uImage通过TFTP烧写到nand flash


三、使用arm-linux-gdb调试内核
1. 开发板uboot启动参数设置为
setenv bootargs 'noinitrd console=kgdb kgdbwait init=/linuxrc root=/dev/nfs nfsroot=192.168.1.111:/home/nfs ip=192.168.1.117:192.168.1.111:192.168.1.1:255.255.255.0::eth0:off'

2. 开发板上电,在解压内核之后,停止在:
Linux...........................................done, booting the kernel.
内核在等待主机arm-linux-gdb的连接。
3. 主机启动arm-linux-gdb
# cd /home/smb_share/kernel/linux-2.6.22.6
# arm-linux-gdb ./vmlinux
显示arm-linux-gdm启动信息,进入控制界面:
GNU gdb 6.7
copyright .......
(gdb)

4. 设置窗口
(gdb) set remotebaud 115200
5. 连接开发板
(gdb) target remote /dev/ttyS0
显示如下信息:
breakpoint () at kernel/kgdb.c:1776
1776 wmb();
(gdb)
>>>>>下面可以开始调试。

四、通过DDD调用arm-linux-gdb来调试内核(图形界面)
首先执行上面三中的1和2两个步骤
# cd /home/smb_share/kernel/linux-2.6.22.6
# vim .gdbinit
内容为: set remotebaud 115200
target remote /dev/ttyS0
# ddd --debugger arm-linux-gdb ./vmlinux
>>此时进入图形调试界面。



五、关于在vmware中添加串口(我的windows XP主机上,带有COM0,如果是USB转串口,也可以配置成功)
1.关闭虚拟机,在vmware虚拟机的 vmx 文件中,添加:
serial0.present = "TRUE"
serial0.fileType = "device"
serial0.fileName = "COM1"
2.启动虚拟机,在虚拟机串口设置中:[VM]-[setting]-[serial port]
把 Connected, Connect at power on, Yield CPU on poll都勾选上。
3.linux主机安装minicom测试下串口是否可用
# apt-get install mimicom
4. 设置minicom
# minicom -s
设置串口为:/dev/ttyS0,无流控 ==>保存
5.测试串口
# minicom
用串口线连上开发板和主机的串口,开发板上电,此时在minicom 上可以看到uboot启动内核的打印信息。






ddd+kgdb调试内核 一、linux主机需要安装的软件 (1) 安装patch工具 # apt-get install quilt (2) 安装DDD # apt-get install ddd (3) 编译、安装arm-linux-gdb Ubuntu自带的GDB工具是基于X86的,需要自己编译ARM平台的GDB工具 把光盘中的gdb-6.7.tar.bz2拷贝到linux主机/home/smb_share # cd 阅读详情

相关推荐

CodeWarrior v11.5.12更新解析:LF5.15内核与GDB 11.1调试实战指南

嵌入式Linux开发中,高效的调试工具链是提升开发效率、保障系统稳定性的关键。内核感知调试技术允许开发者深入操作系统内核,直接查看进程、内存映射等核心数据结构,是实现底层问题定位的基石。GDB作为行业标准的调试器,其版本迭代持续增强了对现代CPU架构和多核场景的支持能力。本次CodeWarrior for ARMv8 v11.5.12的更新,核心价值在于将这两项关键技术进行了深度整合与适配:正式集成GDB 11.1以支持DWARF 5等新特性,并新增对基于Linux 5.15 LTS的NXP Linux F

diaozhiwa5526的博客 418

kgdb调试Linux内核的剖析与改进

Linux内核中加入kgdb,通过开发机上的gdb对目标机上的内核进行源代码级的调试技术。

使用DDD调试LINUX软件

对于学习DDD的调试方法很有帮助,有例子的演示,是一篇实用的论文

ARM-使用KGDB调试内核

今天看了《嵌入式linux应用开发 完全手册》中第18章,关于使用KGDB调试内核的问题,中间碰到了一些问题,最后查找资料,一一解决了把过程记录于此,以便以后参考>>>>>>>>>> 一、linux主机需要安装的软件 (1) 安装patch工具 # apt-get install quilt (2) 安装DDD # apt-get install ddd (3) 编译、安装arm-linux-

IOT物联网小镇 3701

arm linux kgdb 内核,kgdbARM开发板上调试kernel成功

大概几个注意点:1.公版的Linux需要打kgdb补丁的,kgdb官方那边可能不支持新版本的内核(我的是2.6.18),可以在下面的网址找到,但是ARM上调试需要打哪些补丁,不是很清楚,网上的几篇中文教程文章都是针对x86调试的。montavista是已经打好补丁的。2.在make menuconfig选中这几个items:Kernel hacking --->[*] Compile th...

weixin_36324426的博客 195

arm linux kgdb 内核,arm linux kgdb

arm linux kgdb调用参数内核配置:略uboot启动参数配置:setenvbootargs "consloe=tty1 console=ttyO0,115200n8 root=/dev/nfsnfsroot=192.168.1.111:/home/fang/ti-sdk-am335x-evm-06.00.00.00/filesystem/rootfs,nolockrw ip=192.16...

weixin_32300981的博客 237

linux内核移植-内核调试工具KGBD、DDDGDB移植笔记

一、开发环境 1、内核:Linux 2.6.22.6; 2、JZ2440 3、ubuntu9.10 4、kgdb-2_linux2_6_22_uprev.tar.bz2 5、gdb-6.7.tar.bz2 二、内核调试工具KGBD移植 1、解压到当前目录。  $ tar xjf kgdb-2_linux2_6_22_uprev.tar.b

时光左an的博客 2446

arm linux gdb 内核调试,arm-linux-gdb+ddd+kgdb

一、linux主机需要安装的软件(1) 安装patch工具# apt-get install quilt(2) 安装DDD# apt-get install ddd(3) 编译、安装arm-linux-gdbUbuntu自带的GDB工具是基于X86的,需要自己编译ARM平台的GDB工具把光盘中的gdb-6.7.tar.bz2拷贝到linux主机/home/smb_share# cd /home/s...

weixin_39570838的博客 463

ddd linux 调试工具_ddd+kgdb调试内核

一、linux主机需要安装的软件(1) 安装patch工具# apt-get install quilt(2) 安装DDD# apt-get install ddd(3) 编译、安装arm-linux-gdbUbuntu自带的GDB工具是基于X86的,需要自己编译ARM平台的GDB工具把光盘中的gdb-6.7.tar.bz2拷贝到linux主机/home/smb_share# cd /home/s...

weixin_39721009的博客 373

【转】在单板上通过串口调试内核

如何单步源码级调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大、逻辑复杂、与硬件交互的特性。因此,有着不同于应用程序的调试方法,据统计Linux内核开发者使用最普遍的调试方法是printk方法,而其他的方法大多是在特殊情况下才会使用。本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置

snowpiaop的专栏 1200

linux驱动 gdb调试方法,Linux内核驱动开发之KGDB单步调试内核

五、使用gdb调试vmlinux文件。使用前述博文《在Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)》移植的 arm-none-linux-gnueabi-gdb进行调试内核文件vmlinux【见 http://www.linuxidc.com/Linux/2013-06/86232.htm】。方法如下:...

weixin_28889765的博客 618

linux 内核驱动单步,Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)

/**********************************************************************************************************************************/关键步骤:一、配置Linux内核,使其支持KGDB。依次进行如下配置:$make menuconfig(下面配置为必须进行的)Kerne...

weixin_29893445的博客 403

Linux设备驱动程序——调试技术

  对于任何系统来说,调试都是必不可少的内容,当然在Linux设备驱动程序中也不例外,下面就是介绍Linux调试的一些方法以及工具。 Linux调试器GDB GDB调试器的介绍和基本用法   GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求运行程序。 让被调试的程序在工程师指定的断点处停住,断点可...

Alex_wu的博客 1454

ddd linux 调试工具_嵌入式Linux开发

  嵌入式Linux的开发和研究是Linux领域研究的一个热点,目前已开发成功的嵌入式系统有一半以上都是LinuxLinux到底有什么优势,使之取得如此辉煌的成绩呢?本文分为两大部分:Linux的优点、Linux开发。  一、Linux的优势:  广泛的硬件支持  Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行...

weixin_32546235的博客 444

ddd linux 调试工具_嵌入式Linux开发解析

嵌入式Linux的开发和研究是Linux领域研究的一个热点,目前已开发成功的嵌入式系统有一半以上都是LinuxLinux到底有什么优势,使之取得如此辉煌的成绩呢?本文分为两大部分:Linux的优点、Linux开发。一、Linux的优势:广泛的硬件支持Linux能够支持x86、ARM、MIPS、ALPHA、PowerPC等多种体系结构,目前已经成功移植到数十种硬件平台,几乎能够运行在所有 流行的C...

weixin_29617841的博客 164

GDB调试从入门到精通:Linux程序调试实战指南

程序调试是软件开发中的核心技能,GDB作为Linux平台最强大的调试工具,能够帮助开发者快速定位内存泄漏、段错误和多线程死锁等复杂问题。调试器的工作原理是通过插入断点、单步执行和变量监控等方式,让开发者能够实时观察程序状态。在嵌入式开发和性能优化场景中,GDB的远程调试和反向调试功能尤为实用。本文以GDB为核心,详细讲解从基础断点设置到高级多线程调试的全套技巧,特别是针对段错误和内存泄漏等常见问题的实战解决方案。通过Python脚本扩展和自动化调试等进阶用法,开发者可以大幅提升调试效率。

weixin_30312563的博客 354
上一篇: arm-linux-gdb+ddd+kgdb
下一篇: 内核module的总结
shangyaowei
博客等级 码龄17年 135粉丝 1418原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值