一、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调试内核相关推荐

  1. kgdb调试内核无法执行断点及kdb-22:Permisson denied

    之前在Centos8操作系统中,通过kgdb调试内核遇到无法执行断点及kdb-22:Permisson denied的问题.接下来,通过本篇文章讲述修改的配置参数. 章节预览: 1. 选择内核配置内核 ...

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

    如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大.逻辑复杂.与硬件交互的特性.因此,有着不同于应用程序的调试方法,据统计Linux内核开 Linux内核驱动开发之KGDB原 ...

  3. 深度解析KGDB调试Linux模块和内核

    http://blog.csdn.net/swingwang/article/details/72331196 转载文章请注明作者和二维码及全文信息. 不会编程的程序员,不是好的架构师,编程和内核调试 ...

  4. kgdb调试linux内核以及驱动模块

    kgdb调试linux内核以及驱动模块 本文将简要描述如何配置kgdb进行内核以及驱动模块调试,以嵌入式开发为例,但同样对于其他有需要调试kernel有一定的参考价值.本文实验环境为qemu搭建的ri ...

  5. kgdb调试aarch64内核模块

    kgdb调试aarch64内核模块 0 开发环境 1 完善被调试终端的KGDB 2 配置内核 2.1 构建开发环境 2.2设置内核选项 2.3 修改对应模块的优化等级 2.4 内核编译 3 代码修改记 ...

  6. kgdb调试环境的建立

    发信人: dubblelee (星际浪子), 信区: KernelTech 标  题: kgdb调试环境的建立 发信站: BBS 水木清华站 (Tue Jan 25 00:21:44 2005), 转 ...

  7. 嵌入式开发中使用DDD进行调试

    在嵌入式程序开发过程中,程序员要进行大量的调试,以此验证程序的正确性,修改潜在的错误.调试器对于程序员来说是不可或缺的必备工具.在Linux环境中,有很多调试工具和调试辅助工具,例如GDB.XXGDB ...

  8. Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础

    Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...

  9. 使用 Kprobes 调试内核

    https://www.ibm.com/developerworks/cn/linux/l-kprobes.html 使用 Kprobes 调试内核 Prasanna S. Panchamukhi, ...

最新文章

  1. Embedded Linux Primer----嵌入式Linux基础教程--导论
  2. Beetle在Tcp通讯中使用Protobuf
  3. C++下关于XML开源库的使用
  4. spring集成RabbitMQ配置文件详解(生产者和消费者)
  5. 联想r630服务器开启虚拟化,整合虚拟化 联想万全R630服务器上市
  6. java获取本机ipv4,并使用Google Guava 缓存
  7. php-frm进程管理,PHP内核探索-进程管理
  8. VS2017 15.4提供预览版,面向Windows 10秋季更新(FCU)
  9. 2017-2018-20155336 《信息安全系统设计基础》第六周学习总结
  10. 支付宝新漏洞引发恐慌,那如何关闭小额免密支付呢
  11. 中关村 - DIY之如何唯美地阅读电子书
  12. chm转过程html,Word文档转换成chm技巧
  13. 异构网络互联;路由与转发;SDN基本概念;拥塞控制
  14. 镭速——FTP服务器概念详解
  15. 计算机毕业设计Java班费收支管理系统(源码+系统+mysql数据库+lw文档)
  16. 【PERMUT】函数使用技巧
  17. IP通信中音频编解码技术与抗丢包技术概要
  18. OPENXML的用法
  19. 架构基础 - WAL在各种数据系统的应用
  20. 在Springboot中使用pagehelper实现分页管理

热门文章

  1. CMS是Content Management System的缩写,意为内容管理系统。
  2. USACO 2008 Jan Gold 3.Cell Phone Network 树形dp
  3. 国家队入场,中国数字资产交易市场或将迎来新一轮“洗牌”
  4. 【Java设计模式】工厂方法
  5. 动手实现 Bahdanau 注意力模型
  6. 动态规划矩阵连乘求最优值和最优解
  7. Webyog Sqlyog Ultimate_12.5.1最新版完美破解(带注册码)
  8. mysql报错1357_mysql8 参考手册--错误代码1343-1367
  9. MES系统到底是什么?
  10. html2canvas苹果不显示图片,解决html2canvas在苹果手机上不调用问题