rpm debuginfo包的作用

首先看一个例子

case1

main.c

#include <stdio.h>
	
int main()
{
	int a=1;
	int b=2;
	int c=0;
	c=a+b;
	printf("c=%d\n",c);
	return 0;
}

gcc main.c -o main
生成可执行文件./main
然后gdb一下,如下:
在这里插入图片描述
因为,gcc默认是-O2选项,不含调试信息的,所以可以看到no debugging symbols found,没有可调试的符号表加载进来。 文件(main.c)也找不到各个变量(a,b,c)也打印不了,都被优化掉了

case2

那么我们用gcc -g -O0 main.c -o main再试一下。
在这里插入图片描述
gcc编译时加了-g选项后,gdb就可以读到调试用的符号表了并且文件(main.c)也可以找到变量(a,b,c)也都可以打印出来

case3

现在我们在上一步骤的基础上,把main.c文件删除,然后gdb一下。
在这里插入图片描述
gdb就可以读到调试用的符号表了但是文件(main.c)找不到,即没办法在gdb里看到源代码了但是变量(a,b,c)还是可以打印出来

debuginfo包

看了前面的三个例子,我们现在来说说debuginfo包。
一般在linux上,编写一个软件后,都会用rpmbuild工具打包成rpm包,然后发给别人去部署。
rpm包里一般就是有一些可执行文件,静态库或者动态库,但是不包含源代码。
那么有时候为了调试方便,还会同时生成相应的rpm debuginfo包,这样就可以方便调试。只要客户安装了普通rpm包和相应版本的debuginfo包,就可以gdb调试了,如果上面说的case3,虽然看不到源代码,但是可以打印相应的变量。

如何生成相应的debuginfo呢?

在相应的*.spec末尾加上

%debug_package

即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值