螳螂捕蝉,黄雀在后——使用gdb调试gdb/kgdb的方…

2009-05-13 04:57:03来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

本文简单介绍了使用gdb调试gdb和kgdb的方法,供各位对gdb源代码和gdb Remote Serial Protocol分析感兴趣的朋友参考。示例系统为FreeBSD6.1。我把这种调试方法比喻为螳螂捕蝉,黄雀在后,即螳螂版gdb调试蝉版目标程序,黄雀版gdb又去调试螳螂版gdb。
1、准备螳螂版gdb
相关目录说明:
gdb的工程目录(makefile文件)存放在/usr/src/gnu/usr.bin/gdb目录下;
gdb的源代码文件存放在/usr/src/contrib/gdb目录下;
gdb的目标文件(编译结果)存放在/usr/obj/usr/src/gnu/usr.bin/gdb目录下。
(1)修改makefile
到/usr/src/gnu/usr.bin/gdb目录下编辑Makefile.inc文件,在其中的一堆给CFLAGS变量赋值的地方加上一句:
CODE:
[Copy to clipboard]
CFLAGS+= -g(2)编译版本(在/usr/src/gnu/usr.bin/gdb目录下)
CODE:
[Copy to clipboard]
make clean
make完成上述步骤之后,会在/usr/obj/usr/src/gnu/usr.bin/gdb目录下生成debug版本的gdb程序。这就是我们的螳螂版gdb。
2、准备蝉版目标程序
为了说明问题,这个“蝉”只需要是一个简单程序就可以了,比如:
CODE:
[Copy to clipboard]
1   int main(void)
2   {   
3       int a, b, c;
4       a = 1;
5       b = 2;
6       c = a + b;
7       return c;
8   } 带-g选项将其编译为debug版本,假设编译结果名为a.out,这就是我们的蝉。
3、准备黄雀版gdb - 这个就不用准备了,用系统自带的gdb即可
4、螳螂捕蝉
用我们刚才编译出来的螳螂版gdb调试蝉版a.out。
CODE:
[Copy to clipboard]
[~]$ /usr/obj/usr/src/gnu/usr.bin/gdb/gdb/gdb a.out
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
(gdb) 5、黄雀在后
另开一个终端,用ps或者top命令看看刚才运行的螳螂版gdb的PID是多少。
CODE:
[Copy to clipboard]
2670  p0  I+     0:00.24 /usr/obj/usr/src/gnu/usr.bin/gdb/gdb/gdb a.out我们可以看到,对于我们的例子,螳螂版的gdb的PID是2670。
现在,按以下命令运行黄雀版gdb。
CODE:
[Copy to clipboard]
[~]$ gdb -p 2670 /usr/obj/usr/src/gnu/usr.bin/gdb/gdb/gdb
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:使用FreeBSD的SNMP+MRTG网络流量分析

下一篇:Ports和Packages详解