Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1156573
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2013-11-22 14:52:22

GCC默认把调试信息放到可执行文件中。调试信息与程序分离有不少好处,一是可以大大较少可执行程序的大小,二是增加了逆向工程的难度。
GDB 允许将调试信息从可执行程序中分离出来,放在单独的文件中,GDB自动查找并加载调试信息。

在Unix、Linux系统中借助objcopy可以轻松的实现调试信息的分离。操作步骤如下:
1. 编译
# gcc -ggdb3 -o xrand xrand.c
2. 生成单独的调试信息文件
# objcopy --only-keep-debug xrand xrand.dbg
3. 去除调试信息
#objcopy --strip-debug xrand
或者
# strip xrand
4. 添加调试信息文件链接
# objcopy --add-gnu-debuglink=xrand.dbg xrand
5. 确认调试信息文件链接
# objdump -s -j .gnu_debuglink xrand
xrand:     file format elf32-i386

或者 (代替4,5 两步)
 gdb -q --symbol=xrand.dbg --exec=xrand

参考链接:
http://blog.163.com/suds1980@126/blog/static/35124316200811823743913/
http://www.linuxidc.com/Linux/2013-09/90062.htm
阅读(1453) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~