gdb常用的命令:
file:装入想要调试的可执行文件。
kill:终止当前正在调试的程序。
run:运行程序。
list:打印程序源码。
quit:退出gdb。
watch:监视一个变量的值。
break:在代码中设置断点,程序运行到这里会被挂起。
make:不离开gdb而重新产生可执行文件
next:执行下一行代码,但不进入函数内部。
step:执行下一行代码,进入函数内部。
shell:不离开gdb而执行shell。
例如:对devin_test这个程序进行调试:

1.查看source code(不包括头文件):

2.查看程序运行结果:

3.添加断点并进行调试:
断点的设置可以是行号也可以是函数名称。例如在函数add处添加断点。

4.观察变量值的变化:

其它的就先不试验了。附 source code
-
#ifndef TEST_C_INCLUDED
-
#define TEST_C_INCLUDED
-
#include <stdio.h>
-
#include <string.h>
-
#include <stdlib.h>
-
typedef struct {
-
int a;
-
char b;
-
};
-
int add(int a,int b);
-
int sur(int a,int b);
-
-
int main(int argc,char* argv[])
-
{
-
int a = 3;
-
int b = 4;
-
int sum = 0;
-
printf("add=%d\n",add(a,b));
-
sum = add(a,b);
-
printf("sur=%d\n",sur(a,b));
-
sum = sur(a,b);
-
return 0;
-
}
-
int add(int a,int b)
-
{
-
return a+b;
-
}
-
int sur(int a,int b)
-
{
-
return a-b;
-
}
-
#endif // TEST_C_INCLUDED
阅读(1494) | 评论(0) | 转发(0) |