gdb调试

调试GDB程序之前的安装gcc或者G++

安装方式

yum install gcc (gcc安装方式)

yum install gcc-c++ (注意不是yum install g++)


GDB调试方法有以下几种

1,gdb <可执行文件>,在可执行文件目录下执行gdb,不然的加路径

2,gdb <core文件>,core文件是服务器宕机之后生成的dump文件,可以定位问题

3,gdb attach pid,这种方式一般用于调试服务,服务是一直启动,将进程attach上就可以了,或者先启动gdb,再输入attach pid 也可以,detach解除附加的调试进程


验证一下测试程序:

#include<stdio.h>


int add(){
int res = 0;
int i;
for (i = 0; i < 100; ++i)
{
res += i;
}
return res;
}


void main(){
int res = add();

printf("res = %d\n", res);


int b = 10;
b += 20;
printf("b = %d\n", b);
int i = 0;
while(1){
i += 1;
}


}


编译:gcc -g test.c -o test,记得带上-g,不然生成的程序没有调试信息,不能进行gdb调试

gdb test(开启调试)

list(可以输入简写l,显示文件,可能显示不全,点击enter键会显示后面的文件)

break n|func (设置断点,n是指程序的行数,func是指函数名,也可以用简写b)

info breakpoints(显示断点信息)

run (运行程序,简写r)

然后程序就会在断点处停止

使用n调到下一步

c则运行到下一个断点处

p 则是打印变量

bt 查看函数堆栈

quit (退出gdb调试,简写q)


附上一些常用的gdb命令

backtrace / bt 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where)

breakpoint / b 在程序中设置一个断点

cd 改变当前工作目录

clear 删除刚才停止处的断点

commands 命中断点时,列出将要执行的命令

continue 从断点开始继续执行

delete 删除一个断点或监测点;也可与其他命令一起使用

display 程序停止时显示变量和表达时

down 下移栈帧,使得另一个函数成为当前函数

frame 选择下一条continue命令的帧

info 显示与该程序有关的各种信息

jump 在源程序中的另一点开始运行

kill 异常终止在gdb 控制下运行的程序

list 列出相应于正在执行的程序的原文件内容

next 执行下一个源程序行,从而执行其整体中的一个函数

print 显示变量或表达式的值

pwd 显示当前工作目录

ptype 显示一个数据结构(如一个结构或C++类)的内容

quit 退出gdb

reverse-search 在源文件中反向搜索正规表达式

run 执行该程序

search 在源文件中搜索正规表达式

set variable 给变量赋值

signal 将一个信号发送到正在运行的进程

step 执行下一个源程序行,必要时进入下一个函数

undisplay display 命令的反命令,不要显示表达式

until 结束当前循环

up 上移栈帧,使另一函数成为当前函数

watch 在程序中设置一个监测点(即数据断点)

whatis 显示变量或函数类型




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值