代码如下:
#include <stdio.h>
void fun(void)
{
printf("123\n");
}
int main(void)
{
int i= 1;
i++;
printf("GBD test\n");
fun();
printf("GDB end\n");
printf("%d",i);
return 0;
}
编译命令:
g++ gdbtest.cpp -o gdbexe -g #-g带调试信息
GDB命令:
-
gdb gdbexe 进入调试
-
list 显示代码(简写l)
-l #显示,执行一次下翻一页
-l 3 #显示第三行
-l fun #显示fun函数
- break 设置断点(简写b)
break 3 #第三行设置断点
break fun #函数名设置断点
info break #查看已经设置到的断点,简写i b
- run 执行代码
- next 执行下一行代码(不进入函数)
- step 单步执行,可进入函数
- delete num 删除num断点(num可由info break查看)
- clear 清除所有断点
- continue 运行到下一个断点
- print i
print i #打印变量i的值
print i+2 #打印表达式值
- set (var)i = 10 改变变量i 的值,(如果内部存在i变量,用var标志这是代码中的普通变量)
- bt 查看函数调用的栈空间信息
linux下程序死掉之后如何调试:
可以设置让程序生成Core Dump文件
- ulimit -c 查看 如果是0则不会生成Core Dump文件
使用下面命令: - ulimit -c n 设置Core Dump文件最大n kb
- ulimit -c unlimited 不设上限
生成后使用 gdb xxx core 来查看文件,来定位错误