移植gdb到DM368 IPNC中 linux arm gdb

From: http://blog.csdn.net/ghostyu/article/details/8081897

移植gdb到嵌入式的ipnc中,大多数人习惯使用printf调试,但是遇到像”segment fault“这的错误也是后就很难定位,这时候gdb的作用就体现出来了

在pc使用gdb调试应用程序前,应用程序编译是需带上 gcc -g参数,就是编译带有调试信息的程序,不然使用gdb是找不到程序的symbol的

在arm中使用gdb也不例外,也要加上arm_v5t_le-gcc -g参数,只不过,arm上linux不同于pc,嵌入式的gdb采用这样的调试方式:

在arm中运行gdbserver

在pc上运行gdbserver对应的arm-linux-gdb,这样的方式来调试程序。

所以的调试操作均在pc上完成,但是程序的输出还是在arm上。


现在来移植gdb到dm368上

1、下载gdb源码,目前的最高版本的gdb-7.5,下载地址:http://www.gnu.org/software/gdb/download/

2、解压到合适的文件夹下,注意不要放到window与linux共享的目录下即可:tar -xvzf gdb-7.5.tar.gz

3、进入gdb-7.5源码目录,然后配置编译arm-linux-gdb

我的配置是这样的:./configure --target=arm-linux --prefix=/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5 -v

target是指编译的目标平台

prefix是指安装编译好的程序目录,我将它安装到arm_v5t_le工具链的目录。

这里注意了,现在配置编译的不是gdbserver,而是gdbserver对应的需要运行在主机pc上的arm-linux-gdb,虽然linux上已经有gdb命令,但是这个gdb命令式没法跟gdbserver交互的。

编译成功后会在prifix设定的目录下产生arm-linux-gdb可执行程序,如图


target_board 和readme是我自己创建的。

4、进入gdb-7.5/gdb/gdbserver目录,配置,然后交叉编译运行在arm上的gdbserver

4.1在交叉编译gdbserver之前,先进行一些设置:

添加刚才编译好的arm-linux-gdb到PC linux的PATH中

PATH="/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5/bin:$PATH"

4.2配置

./configure --target=arm-linux --host=arm-linux

4.3修改config.h

编译是会产生一个错误,说找不到sys/reg.h

所以这里修改一下config.h,不要去使用reg

#vim config.h
//#define HAVA_SYS_REG_H //注释此句

4.4交叉编译

make CC=arm_v5t_le-gcc

5、将交叉编译好的gdbserver复制到目标文件系统的/usr/locaol/bin目录下,其他地方也可以,只要能在shell中找到gdbserver即可


测试:

1、随便写一个c文件,然后编译

arm_v5t_le-gcc -g test.c

得到a.out,复制到目标文件系统中

2、在目标板上执行

gdbserver 192.168.1.227:1234 a.out

192.168.1.227为目标板ip地址,1234是没有被占用的tcp端口

意思就是创建一个调试服务器,一边主机pc上的arm-linux-gdb能够连接这个服务器来调试a.out

3、在主机pc上执行

arm-linux-gdb a.out

然后在gdb的shell中输入

target remote 192.168.1.227:1234

连接成功后目标板上会打印连接信息,如图


至此,就可以按照通常gdb的命令调试程序啦

附录1:调试时出现的警告

warning: `/lib/libc.so.6': Shared library architecture unknown is not compatible with target architecture arm.
warning: Could not load shared library symbols for /lib/ld-linux.so.3.
Do you need "set solib-search-path" or "set sysroot"?

忽略,目前没有发现影响什么。

附录2:gdb调试手册和gdb调试命令的pdf下载,这两篇是我在网上找的,觉得比较好

gdb调试手册:http://www.kuaipan.cn/file/id_48923272389085122.html

gdb调试命令:http://www.kuaipan.cn/file/id_48923272389085121.html


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[react] react是哪个公司开发的

[react] react是哪个公司开发的 facebook 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】

本文将详细讲述Silverlight中Binding,包括Binding的属性和用法,Binding的数据流向。 Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进行转换和验证之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定&#xff0c…

linux下如何产生core,调试core

From: http://blog.163.com/redhumor126/blog/static/19554784201131791239753/ 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出…

[react] react中怎样阻止组件渲染?

[react] react中怎样阻止组件渲染? class组件 使用shouldComponentUpdate生命周期,return false继承React.PureComponent只要prop没有改变(浅比较),就不会执行render函数 函数式组件 使用React.memo包裹组件函数,props没有改变就…

嵌套滚动demo

https://github.com/luv135/NestedScrollingDemo https://github.com/ggajews/nestedscrollingchildviewdemo ViewParentCompat是一个和父view交互的兼容类,它会判断api version,如果在Lollipop以上,就是用view自带的方法,否则判断…

jqGrid + JSON + WebService 完整示例

真没找到这样的例子,于是自已写了个,分享出来。 第一步,首先在WebService上,添加[System.Web.Script.Services.ScriptService]属性标签,让WebServer支持JSON. namespace jqGrid_JSON_WebService_Sample.Services{/// &…

[react] 在react中页面重新加载时怎样保留数据?

[react] 在react中页面重新加载时怎样保留数据? 使用浏览器localstorage来保存应用程序的状态 个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Sublime Text 3 代码格式化插件推荐 CodeFormatter

CodeFormatter CodeFormatter has support for the following languages: * PHP - By PHP_Beautifier* JavaScript/JSON - By JSBeautifier* HTML - By JSBeautifier* CSS - By JSBeautifier* Python - By PythonTidy (only ST2) 支持,php,js,html,css 默认快捷键 …

[react-router] React-Router 4中<Router>组件有几种类型?

[react-router] React-Router 4中<Router>组件有几种类型&#xff1f; HashRouter&#xff1a;老浏览器的history,主要通过hash来实现&#xff0c;对应createHashHistory()BrowserRouter&#xff1a;高版本浏览器,通过html5里面的history&#xff0c;对应createBrowserH…

交叉编译和交叉调试环境搭建及使用

From: http://blog.chinaunix.net/uid-25119314-id-226230.html 1. 交叉编译器 1.1 交叉编译器介绍 在一种计算机环境中运行的编译程序&#xff0c;能编译出在另外一种环境下运行的代码&#xff0c;我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说&…

struts2文件上传中,如何限制上传的文件类型

这个在struts2的doc中已经有所说明&#xff0c;但是说得并不详细,而且他给的例子是有错误的&#xff0c;下面我将列出文件上传并限制类型的具体步骤struts2版本是2.1.6struts2是根据contentType来限制的&#xff0c;并不是文件的扩展名比如我想仅上传image/png,image/gif,image…

CGContextRef CIImageRef详解

第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate函数创建CGImageRef 然后把CGImageRef放到CGContext中去编辑 第三种 用CGImageCreateCopy 或者 CGImageCreateCopyWithColorSpace 函数拷贝 CGImageRef CGImageCreate ( …

[react] react怎么拿到组件对应的DOM元素?

[react] react怎么拿到组件对应的DOM元素&#xff1f; 在Class组件中 import React from react; class CComponent extends React.Component {refDiv React.createRef();componentDidMount () {console.log(this.refDiv.current)}render () {return <div><div class…

linux缩小lv发生文件系统错误

众所周知&#xff0c;linux lvm 扩大lv是先扩大lv&#xff0c;然后再扩大文件系统&#xff0c;所以有的人就认为缩小lv也是先缩小lv,再缩小文件系统&#xff0c;当然博主刚开始也那么认为&#xff0c;导致lvresize 以后&#xff0c;lv的大小小于文件系统大小而无法挂载&#xf…

Fedora12上编译安装gdb-7.2

在Fedora12上编译安装gdb-7.2&#xff1a;编译安装gdb和gdbserver 1. 下载gdb7.2: ftp://sourceware.org/pub/gdb/releases/gdb-7.2a.tar.bz2 2. 编译安装gdb 2.1 解压&#xff1a; [zcm~ #1]$cd /mnt/hgfs/opensource/ [zcmopensource #2]$ls a52dec ffmpeg-1.2…

[react-router] react的路由和普通路由有什么区别?

[react-router] react的路由和普通路由有什么区别&#xff1f; React路由是前端的路由&#xff0c;普通路由指的是后端的路由React路由不管是hash还是browser的模式&#xff0c;都是在响应了hash/browser的change之后&#xff0c;再变更页面的DOM结构&#xff0c;由于是单页应…

UITableView 性能优化

网络图片异步加载&#xff0c;SDWebImage。文字直接 drawInRect/drawAtPoint 绘制&#xff0c;参考 ABTableViewCell&#xff0c;AdvancedTableViewCells。本地图片也可以直接绘制&#xff0c;或者用 CALayer 来添加显示。cell 重用机制。cell 内容尽量避免透明效果。如非必要&…

Hello Views之Spinner(yaozq翻译,仅供参考)

Spinner是一种类似于下拉列表的widget。 在这个教程中&#xff0c;你将创建一个简单的用于展示星球列表的spinner组件。当选择列表中的一项时&#xff0c;将会弹出一个表示所选项的toast信息。下面是具体步骤&#xff1a; 1&#xff0c;新建一个名为HelloSpinner的项目。 2&…

error PRJ0003 : 生成“cl.exe”时出错 解决方案

本人已经安装了VS2010&#xff0c;但是同事给的项目是用VC2008写的&#xff0c;用到几个lib文件&#xff0c;路径也都正确&#xff0c;但就是无法正确解析&#xff0c;所以我怀疑是lib库生成的环境问题。所以考虑装个VC2008。但是我又不敢直接安装VS2008&#xff0c;怕破坏VS20…

[react] 简要描述下你知道的react工作原理是什么?

[react] 简要描述下你知道的react工作原理是什么&#xff1f; 我理解的核心部分&#xff1a; 通过虚拟DOM表达真实DOM通过数据驱动更新虚拟DOM进而更新真实DOM&#xff08;MVVM&#xff09;有一套完整并且合理的 DOM Diff 算法&#xff08;现在 React 17 是基于 lane 架构来调…