gdb使用教程

准备

编译时添加指令保留源码信息,便于调试

-g

开启保存段错误使能,当程序执行出现段错误时,就会生成core文件

#在终端执行: ulimit -c unlimited

启动gdb调试

调试正在运行的程序

#查看进程id
ps -aux | grep program
#调试pid进程程序
gdb pid

core段错误调试

#删除现有有的core
rm -f core
#执行程序,直到程序报段错误(core dumped)
./program
#调试core
gdb ./program core

在docker容器上使用gdb

1.docker使能生成core dump,在宿主机上执行:
	echo '/tmp/core.%t.%e.%p'|sudo tee /proc/sys/kernel/core_pattern
2.给docker run参数添加:
	--ulimit core=-1 --security-opt seccomp=unconfined
3.docker image 安装gdb
	sudo apt-get install gdb
4.进入gdb
	sudo docker ps -a
	sudo docker exec -it container_id bash
5.生成core dumped,运行程序出现segmentation fault
6.调试
	sudo gdb /var/www/program /tmp/core.45s45s4d

常用指令

在源码16行设置断点:break 16
在Afunc函数入口打断点:break Afunc 
查看所有断点信息:info break
运行程序:run
执行下一步:next
继续执行:c
打印变量i:p i
退出函数:finish
退出gdb:q
调试正在运行的程序:gdb PID
在源文件file的line处断点:break file:line
在源文件file的func处断点:break file func
显示段错误信息(会逐行显示错误信息,并且编号在句首):where
显示堆栈信息:bt
查看某處段錯誤(n表示段错误编号):frame n
切换线程:thread tid

以上是个人项目中总结而得,如有不对,欢迎指出(_)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值