GDB简介
GNU Debugger,是GNU工程为GNU操作系统开发的调试器,但它的使用不局限于GNU操作系统,GDN可以运行在UNIX、linux甚至Microsoft Windows。GDB可以调试C、C++等语言编写的程序;被调试的程序可以跟GDB运行在同一台电脑,也可以运行在不同的电脑。使用GDB我们可以1)设置断点使程序停住2)监视或修改程序中变量的值3)跟踪代码执行过程
gdb命令
gdb调试举例
用一段代码实现对一个整型数的反转功能,但输入100时,程序的输出结果却不正确。
#include<stdio.h>
void ShowRevertNum(int iNum)
{
while(iNum > 10)
{
printf("%d",iNum%10);
iNum = iNum/10;
}
printf("%d
",iNum);
}
int main(void)
{
int iNum;
printf("Please input a number:");
scanf("%d",&iNum);
printf("After revert:");
ShowRevertNum(iNum);
}
段错误调试
#include<stdio.h>
#include<string.h>
#define BUFSIZE 256
static char acBuf[BUFSIZE];
static char *pStr;
int main(void)
{
printf("Please input a string:");
gets(pStr);
printf("
Your string is:%s
",pStr);
}
linux中,程序崩溃时,一般会产生core文件,记录进程退出前的状态,调试段错误问题,借助于该文件,课快速定位问题。可按一下步骤生成和使用core文件
1)让系统产生core文件:ulimit -c num #设定core文件容量(num为数字,为0是不产生core文件)
2)运行程序,让程序奔溃,从而产生core文件
3)gdb配合core文件,定位问题: gdb 程序名 core 文件名;如 gdb segDemo core