【Linux】linux中的c++怎么调试?gdb的介绍和使用。

  1. 背景

1.1.前提知识

程序的发布方式有两种, debug模式和release模式
Linux gcc/g++出来的二进制程序, 默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第1张图片
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第2张图片
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第3张图片
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第4张图片

windows上的调试方法有区别吗?

1.调试思路是一样的
2.调试的操作方式,一定是不一样的(命令行调试)

  1. 开始使用

2.1.安装gdb

sudo yum install -y gdb

2.2.使用

gdb binFile 退出: ctrl + d 或 quit /q

2.2.1.显示binFile源代码(list/l)

一般list/l会记住上一次显示的行数,接着上次的位置往下列,每次列10行。
list/l 【行号】:从行号开始往下列10行。
list/l 【函数名】 :列出某个函数的源代码。列10行。
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第5张图片

2.2.2.添加/删除断点(break/b)

break/b 行号:在某一行设置断点.
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第6张图片
delete breakpoints / d:删除所有断点 delete breakpoints / d 【n】:删除序号为n的断点(n不是行号)
info b :查看断点
info(或i) breakpoints:参看当前设置了哪些断点
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第7张图片
disable breakpoints:禁用断点(遇到断点就不会停下来)
(enable breakpoints )/ enable:启用断点
disable breakpoints 【序号】:禁用某一个断点。
(enable breakpoints )/ enable 【序号】:启用某一个断点

2.2.3.查看(info)(p)(display)

info b/break :查看当前所有断点。
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第8张图片
info/i locals:查看当前栈帧局部变量的值。
p 【变量名】打印变量
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第9张图片
display 变量名:跟踪查看一个变量,每次停下来都显示它的值 。(也可以查看地址)
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第10张图片
undisplay:全部取消对先前设置的那些变量的跟踪。
undisplay 【序号】:取消对这个变量的跟踪。
【Linux】linux中的c++怎么调试?gdb的介绍和使用。_第11张图片

2.2.4.运行调试(r/run)(n/next)(s/stop)(c/continue)

run/r:从开始连续而非单步执行程序(调试运行)
n/next:单条执行。 (逐过程)
s/step:进入函数调用(逐语句)
continue/c:从当前位置开始连续而非单步执行程序,也就是从当前位置开始到下一个断点或者结束。
finish:执行完当前函数,然后停下来等待命令 。可以帮我们快速的甄别那个函数出问题了。
until 【行号】:跳至X行。(可能不是预期行,去掉空格/无用的符号)

2.2.5.查看调用堆栈(bt)

bt :查看调用堆栈。

2.2.6.修改参数的值

set 【var】:修改变量的值,根据我们的需要修改临时变量的值
  1. 理解

3.1.f5 / ctrl+f5 / shift+f5

f5:调试运行,有断点直接停下来。 (r/run)
ctrl+f5:不调试执行,在断点不停。
shift+f5:取消调试。(q/quit)
f11:逐个语句(s/step)
f10:逐过程(n/next)

你可能感兴趣的:(linux,c++,运维)