移植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,一经查实,立即删除!

相关文章

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

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

jqGrid + JSON + WebService 完整示例

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

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

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

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

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

Bitmap 之 getPixels() 的 stride

学习Graphics中遇到位图(Bitmap)中getPixels()方法,对该方法的用法大体理解,但对其中的stride参数却不明白具体的用法以及用意,现记述过程如下: getPixels()方法的用处为获取位图(Bitmap)中的像素值(颜色值),存入类型为…

i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例

From: http://blog.csdn.net/leo115/article/details/8101541 我们通常在写for循环 的时候,要实现变量 i 的自增 1 ;往往会在i 和i中随便挑一种写,对于i和i的理解,我们往往停留在返回的值的不同,其实i与i在实现效率上…

BZOJ 1146: [CTSC2008]网络管理Network( 树链剖分 + 树状数组套主席树 )

树链剖分完就成了一道主席树裸题了, 每次树链剖分找出相应区间然后用BIT(可持久化)权值线段树就可以完成计数. 但是空间问题很严重....在修改时不必要的就不要新建, 直接修改原来的..详见代码. 时间复杂度O(N*log^3(N))------------------------------------------------------…

struts2遍历select

2019独角兽企业重金招聘Python工程师标准>>> <s:bean name"org.apache.struts2.util.Counter" id"counter"> <s:param name"first" value"1" /> <s:param name"last" value"pageCount"…

Oracle 彻底 kill session

为什么80%的码农都做不了架构师&#xff1f;>>> --*************************** -- Oracle 彻底 kill session --*************************** kill session 是DBA经常碰到的事情之一。如果kill 掉了不该kill 的session&#xff0c;则具有破坏性&#xff0c;因此尽…

WebService学习总结——调用第三方提供的webService服务

互联网上面有很多的免费webService服务&#xff0c;我们可以调用这些免费的WebService服务&#xff0c;将一些其他网站的内容信息集成到我们的Web应用中显示&#xff0c;下面就以获取天气预报数据。气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server)…

【017】◀▶ C#学习(九) - ADO.NET

《C#入门经典&#xff08;中文第四版&#xff09;》在程序中访问数据库学习笔记 --------------------------------------------------------------------------------------------------------- ●● 目录&#xff1a; A0 ………… System.Data.SqlClient 命名空间 A1 ……………

【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...

2019独角兽企业重金招聘Python工程师标准>>> 【转】主流PHP框架间的比较&#xff08;Zend Framework&#xff0c;CakePHP&#xff0c;CodeIgniter&#xff0c;Symfony&#xff0c;ThinkPHP&#xff0c;FleaPHP&#xff09; 2011年08月14日 星期日 12:51 转载自 leol…

如何利用业务时间提升自我

转载于:https://www.cnblogs.com/helloIT/articles/5140273.html

ping得通外网,上得了QQ,游戏,却打不开网页。

操作系统&#xff1a;win7_64bit 下午帮我小艾优化电脑&#xff0c;不知道把什么插件给卸载了。 她回来以上就上不了网&#xff0c;我首先ping网关&#xff0c;DNS&#xff0c;外网&#xff0c;都通。 登QQ正常。 我的思路&#xff1a; 先把Socket套字结相关的卸载掉就是&#…

WebGIS中一种根据网格索引判断点面关系的方法

文章版权由作者李晓晖和博客园共有&#xff0c;若转载请于明显处标明出处&#xff1a;http://www.cnblogs.com/naaoveGIS/。 1.背景 判断点面关系的算法有很多&#xff0c;在我之前的博文中有一篇专门对其进行了描述&#xff1a;判断点是否落在面中的Oracle存储过程描述。其中提…

为Ubuntu Server 安装图形桌面环境

From: http://www.oschina.net/question/12_10835 第一步&#xff1a;安装桌面环境 首先需要确保您已经在/etc/apt/sources.list 文件中启用了Universe和Multiverse软件库&#xff0c;接下来执行如下命令&#xff1a; sudo apt-get update sudo apt-get install ubuntu-desk…

iSensor APP 之 摄像头调试 OV3640 OV2640 MT9d112

iSensor app 非常适合调试各种摄像头&#xff0c;已测试通过的sensor有&#xff1a; l OV7670、OV7725、OV9650、OV9655、OV9653、OV5642、OV5640 l MT9T001、MT9M001、MT9P031 今天又测试了上述几款新的型号&#xff0c;之前并未用过。 OV3640 OV2640 MT9d112 先看OV2640&am…

查询优化器内核剖析第四篇:从一个实例看执行计划

查询优化器内核剖析第四篇&#xff1a;从一个实例看执行计划系列文章索引&#xff1a; 查询优化器内核剖析第一篇 查询优化器内核剖析第二篇&#xff1a;产生候选执行计划&执行计划成本估算 查询优化器内核剖析第三篇&#xff1a;查询的执行与计划的缓存 &…

Makefile中自定义函数的调用

From: http://www.cnblogs.com/MyEyes/archive/2012/01/12/2320589.html 自己学习脚印&#xff0c;不喜勿喷&#xff0c;谢谢 ~ Makefile中函数定义&#xff1a; external/genext2fs/Config.mk # $(1): src directory # $(2): output file # $(3): label (if any) # $(4): …

python selenium ---键盘事件

转自&#xff1a;http://www.cnblogs.com/fnng/p/3258946.html 本节重点&#xff1a; l 键盘按键用法l 键盘组合键用法l send_keys() 输入中文运行报错问题键盘按键键用法&#xff1a; #codingutf-8 from selenium import webdriver from selenium.webdriver.common.keys impor…