织梦CMS - 轻松建站从此开始!

罗索

Gdb等几则笔记

落鹤生 发布于 2010-04-21 23:59 点击:次 
gdb 几种常见使用方式及编译方法:在本机调试本机的程序。 在正常情况下,我们调试程序都是用的这种方法。2.在ARM板上直接调试ARM程序。
TAG:

Gdb等几则笔记

 

转载时请注明出处和作者联系方式

作者联系方式:李先静 <xianjimli at hotmail dot com>

 

一、gdb几种常见使用方式及编译方法:

1.在本机调试本机的程序。

 

在正常情况下,我们调试程序都是用的这种方法。

这时编译gdb和编译普通应用一样:

 

mkdir host-i386

cd host-i386

../configure –prefix=/usr/local

make;make install


2.ARM板上直接调试ARM程序。

 

这种情况比较少见,但确实可行,不过介于一般ARM CPU的运算能力,只能调试小程序,因为调试大程序实在慢得让人难以忍受。调试时,在主机端把程序编译好后,通过NFS映射到ARM板上。保持源程序在ARM上和主机上的目录一致,这样在gdb中就不用>设置源代码的路径了。

 

这时编译gdb和交叉编译普通程序一样,指定—host=arm-linux即可。

 

mkdir arm

cd arm

../configure --prefix=/usr/local/arm-rootfs/usr/local –host=arm-linux –build=i386-linux –disable-werror --without-x --disable-gdbtk --disable-tui

make;make install

 

3.ARM板运行gdbserver,在主机上运行gdb

 

由于gdbserver占用资源很少,适合在目标板上运行,所以这种情况最为典型。它的使用方法比较简单,但是调试共享库有点麻烦,我在<嵌入式linux调试:用gdbserver调试共享库>中介绍过一种方法,不知道有没有更好办法。

 

编译主机端的gdb:要注意的是,这和第一种中的编译方法不一样,因为此时gdb虽然在主机上运行,它解释的是ARM指令,而不是主机的i386指令,所以要指定–target=arm-linux。编译方法如下:

 

mkdir arm-target

cd arm-target

../configure --prefix=/usr/local/target-arm –target=arm-linux

make;make install

 

编译ARM板的gdbserver:实际上就是交叉编译gdbserver,与第二种方法类似,这里不再多说。

 

二、版本不匹配引用的问题。

 

最近测试浏览器(GTK+ minimo),发现 minimo浏览部分网页时,会在pango_default_breakassert掉。今天用gdb跟了一下,>原来是因为pangoglib不匹配引起的。前段时间,我们升级了glib,经过一段时间的测试没有发现什么问题。今天发现pango>glib一些枚举定义不一致,结果引发了assert,升级了pango之后,浏览器非常稳定了。除了多测试,好像对这种错误无能为力,不知大家有什么好方法没有?

 

~~end~~

(李先静)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201004/9218.html]
本文出处:百度博客 作者:李先静
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容