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/
阅读(3473) | 评论(0) | 转发(0) |