怎么用gdb

来源:互联网 发布:淘宝一键推广软件 编辑:程序博客网 时间:2024/05/17 03:50

如果你要想用gdb debug程序的话,编译的时候必须带有-g选项, 例如:

cc  -shared -I/xenv/calcwd/X/18.10/BINGRP_sun4/32/include -I/xenv/java/X/1.4.2_11l/include -I/xenv/java/X/1.4.2_11l/include/linux  test.c -o ./libtest.so -lm -g

这个命令是编译test.c并把它打到libtest.so包中,注意这是个动态包。

然后再compile 你自己的程序:

gcc -g -I/xenv/calclib/X/18/BINGRP_ia32/include -L/home/lib -L/home/test/cpp1/tests -ltest  -lcal -lf2c -lm -o mytest mytest.c

怎样debug呢?

> gdb mytest

>break main : 设置断点,or  break 1 : 设置断点在第一行

> run : 开始运行程序

>step  : 进行单步调试

在调试的时候也可以设置断点,一步步跟踪

用print打印变量如print a

或者print a=1 同样可以在程序运行时动态改变变量a的值

 

下面是一些命令的参考:

gdb 的常用命令


                表 1-4  常用的 gdb 命令
命令                        解释
break NUM               在指定的行上设置断点。
bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而
                        导致停止运行时。
display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
file FILE               装载指定的可执行文件进行调试。
help NAME               显示指定命令的帮助信息。
info break              显示当前断点清单,包括到达断点处的次数等。
info files              显示被调试文件的详细信息。
info func               显示所有的函数名称。
info local              显示当函数中的局部变量信息。
info prog               显示被调试程序的执行状态。
info var                显示所有的全局和静态变量名称。
kill                    终止正被调试的程序。
list                    显示源代码段。
make                    在不退出 gdb 的情况下运行 make 工具。
next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。
print EXPR              显示表达式 EXPR 的值。


原创粉丝点击