GDB调试时候的问题

写了一个工程,有好几个文件,出了一点问题,找不到原因,只能调试,但是在调试的时候也碰到了各种问题,现在记录在这篇博客里面,也为后面的人带来更多的帮助。

首先是这个问题:Missing separate debuginfos, use: debuginfo-install glibc-2.12-1


gdb调试提示:Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.......

但是按照大多数的教程做下来,安装各种库 还是会出现这种情况

怎么办?

主要原因是gcc版本太高,gdb版本太低,升级以下gdb版本就好了。

1.下载源码包:
   wget http://ftp.nluug.nl/gnu/gdb/gdb-7.8.2.tar.gz
 2.解压源码包:
   tar -zxvf gdb-7.8.2.tar.gz
 3../configure
4. make
   如果提示缺少一个库:configure: error: no termcap library found
5.下载termcap库源码:
   wget ftp://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
6.编译安装termcap库:
  ./configure
  make
 make install
7.重新跳到gdb源码目录编译安装:
  ./config
  make
  make install
  注意:默认安装在/usr/local/bin目录下,后面自己改环境变量就可以直接用了。

8 发现还是老版本7.2 怎么办

查了下GDB的默认安装目录是/usr/loca/bin,export命令查看了下我机器默认的环境变量是/usr/bin,于是备份旧版本的gdb程序后,将usr/loca/bin下新的gdb可执行程序复制过去。gdb -v终于显示版本7.8。调试一下程序,原来的bug不见了。



然后又碰到了这个问题:

 gdb Single stepping until exit from function main


这个原因是需要调试函数在编译的时候没有加入-g选项,加上后即可,如果是使用makefile编译的,需要编译很多文件,像我这样的,则在CFLAGS 后加上-g, 并且在生成可执行程序的时候也加上-g即可,就像下面的那样。

BIN = wcamsrv
INC = -Iinclude/  
SRC = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o,$(SRC))

CC = gcc
CFLAGS = $(INC) -g

$(BIN):$(OBJS)
	$(CC) -o  $@ $^  -g  #-lavformat -lavdevice -lavcodec 

clean:
	rm $(OBJS) $(BIN)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值