Linux(Ubuntu)下嵌入式gdb调试环境
2016-04-19 21:35
447 查看
系统原理课实验要做CMU的Bomblab实验,然而bombg文件在arm架构,因此要配置一个交叉编译/调试环境,曾测试在Ubuntu 15.04下直接安装arm-none-eabi-gdb,然而调试时单步进行会出现IO错误,因此便自己下载了gdb-7.8编译搭建arm-linux-gdb。
一.配置arm-linux-gdb
1.下载gdb http://ftp.gnu.org/gnu/gdb/
我下载的版本是gdb-7.8
2.安装gdb
<1>解压
<2>进入到解压好的gdb目录中
把导致异常的代码(line 6065):
<5>安装libncurses5-dev
<6>编译
<8>更改环境变量
二.连接手机(root后)与配置adb
1.安装adb
2.USB链接目标板/手机
4.网线或无线连接 pc 机和目标板或手机
5.查询手机ip或设置目标板的 ip(在目标板上执行)
6.查询pc端ip或设置
至此,应该能够正常进行gdb调试了.
一.配置arm-linux-gdb
1.下载gdb http://ftp.gnu.org/gnu/gdb/
我下载的版本是gdb-7.8
2.安装gdb
<1>解压
#tar xjf gdb-7.8.tar.gz
<2>进入到解压好的gdb目录中
#cd gdb-7.8/<3>配置为arm架构
#./configure --target=arm-linux<4>修改/gdb/remote.c,否则会出现 “Remote 'g' packet reply is too long”错误
把导致异常的代码(line 6065):
if (buf_len > 2 * rsa->sizeof_g_packet) error (_("Remote 'g' packet reply is too long: %s"), rs->buf);改为
if (buf_len > 2 * rsa->sizeof_g_packet) { rsa->sizeof_g_packet = buf_len ; for (i = 0; i < gdbarch_num_regs (gdbarch); i++) { if (rsa->regs[i].pnum == -1) continue; if (rsa->regs[i].offset >= rsa->sizeof_g_packet) rsa->regs[i].in_g_packet = 0; else rsa->regs[i].in_g_packet = 1; } }
<5>安装libncurses5-dev
#sudo apt-get install libncurses5-dev
<6>编译
#make<7>安装
#make install
<8>更改环境变量
#gedit /etc/environment //把arm-linux-gdb加入环境变量 (:/usr/local/arm-gdb/bin) #source /etc/environment //更新环境变量
二.连接手机(root后)与配置adb
1.安装adb
#sudo add-apt-repository ppa:nilarimogard/webupd8 #sudo apt-get update #sudo apt-get install android-tools-adb
2.USB链接目标板/手机
#adb devices #adb shell3.将 bomb push 到开发板上
#adb push bombg /data/local
4.网线或无线连接 pc 机和目标板或手机
5.查询手机ip或设置目标板的 ip(在目标板上执行)
#ifconfig eth0 192.168.0.100 (目标板) #netcfg (手机)
6.查询pc端ip或设置
#ifconfig 或 #ifconfig eth0 192.168.0.1017.目标版或手机开启gdbserver(若无请自行搜索下载或编译)
#gdbserver 192.168.0.101:2345 bombg (ip 为 pc 机机 ip)8.在 pc 机上调试可执行程序 bombg
#arm-linux-gdb bombg (gdb) target remote 192.168.0.100:2345 (ip为目标板或手机ip)
至此,应该能够正常进行gdb调试了.
相关文章推荐
- linux快捷键
- linux用户登录日志
- 《Linux内核分析》期中总结
- Linux内核抢占机制 - 简介
- 《linux内核分析》期末总结
- ubantu下解压命令大全
- CentOS7 时区设置.md
- 安装源-centos6.6
- linux kernel gic 介绍
- ubuntu Error: E: Sub-process /usr/bin/dpkg returned an error code (1)
- 新手用linux的记录(centOS6.5)
- 在linux(fedora23)上开发java
- linux ubuntu编写内核模块并添加
- linux sysstat 安装使用
- [Qemu] 解决在qemu里安装的centos7 gnome-session无法正常启动的问题
- Linux 如何禁止用户登录
- Linux-服务管理 之---运行级别
- Linux 三剑客之 sed 命令
- centos6安装hive
- Linux Ctrl+C Ctrl+Z Ctrl+D区别