Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483420
  • 博文数量: 118
  • 博客积分: 5003
  • 博客等级: 大校
  • 技术积分: 1213
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-07 20:29
文章存档

2011年(8)

2010年(4)

2009年(12)

2008年(85)

2007年(9)

我的朋友

分类: LINUX

2009-02-11 14:23:14

这其实是我很找以前解决我们项目的调试过程中遇到的问题,在一个linux项目的开发过程中,如果仅凭借printf和点灯来解决所有的故障的话,我觉得有点天方夜谭的感觉,有点像我最近看的一部电视《防火墙5788》中将所谓的电脑高手虚幻成神一样的人物,不现实。
所以我们一定要使用linux的先辈们给我们留下的宝贵的工具:gnu,如果使用好,这个工具的强悍将是你不可想象的。在使用gdb调试程序时,需要注意下面的这些东西,不然,容易出现一些稀奇古怪的问题。
1、首先,你必须保证gdbserver和gdb调试器使用的是同一版本,如果你gdb使用6.6,而gdbsercer使用6.8,那么你只能浪费你宝贵的时间,今天在帮同事调试环境时,没有忘记了这一点,结果他那边的多线程的程序一运行就出现:program received signal SIG32 :real-time event 32
2、所有你使用的库文件,包括你自己编译的库文件和交叉编译器的库文件,都不能进行strip,如果你不小心,进行了这一项操作,那么,很痛苦,你将出现一些很诧异的现象
3、gdb调试,在交叉编译器的库文件目录下,必须存在下面的这些动态库文件:libthread_db-1.0.so和libpthread-0.10.so文件
4、在你的用户目录下,建立一个文件.gdbinit,里面指定库文件的路径:
set solib-absolute-prefix /opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat-linux-gnu
5、奇怪的packet error和invalid hex错误,有段时间,公司出现一个mac地址对应多个电脑的问题,就是MAC地址盗用的问题,那么调试的时候就会出现这种错误,当没有被盗用的时候,这种错误就消失了。
阅读(3361) | 评论(0) | 转发(0) |
0

上一篇:IRIS的使用

下一篇:转载--什么是爱情?

给主人留下些什么吧!~~