linux下gdb调试

一:错误容易复现,使用gdb
1:控制类命令:
b(break):添加断点【b main.cpp:12】/【b test】/【b 12】【info break显示断点信息】【delete break 编号】
r(run):重头开始运行程序
n(next):下一步【n 3】可以执行三步
c(continue):程序继续运行,直到下一个断点处
q(quit):退出

2:显示类命令
p(print):打印
disp(display):监视一个变量的值
x:显示内存的值【x/16xb】显示16个单位,x十六进制(x/d/u/f/s),b单位是一字节(b/h/w/g)
help:帮助命令

3:栈信息
bt(backtrack):调用堆栈

二:错误不容易复现,常年累月,不知道什么时候发生错误,可以使用“内存转储”手段,来复原查看段错误发生位置

1:在运行的终端中使用ulimit -c unlimited(在shell关闭之后,需要重启一次)

2:运行程序,程序发生错误时,程序退出,同时当错误发生时,将转储到.core这个文件中;【gdb ./hello core】可以显示当时出错信息;

三:补充
1:程序编译有-g选项时,才可以被调试;
2:多加了一些调试信息,则目标体积会变大;
3:obj/gdb的初始的时候的最后一行可以查看有没有调试信息;
4:调试信息记录了源文件和行号信息
5:适合单元测试(较短的代码,功能单纯的函数),以及段错误的定位;
不适合代谢那个程序,尤其是使用了多线程的代码;只能选择打印调试了;
6:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值