Linux调试器-gdb使用

1:debug与release的介绍

在Linux下使用GBD(GNU Build Debugger)进行调试时,release, debug 是两种不同的编译选项,它们分别对应不同的编译配置。 只有将release编译配置更改为debug,才能使用gdb调试

                   release:

通常用于生产环境的编译,它通常会启用一些优化选项以提高编译速度和程序性能,同时可能会关闭一些调试信息。

                    debug:

则主要用于调试,它通常会包含更多的调试信息,以便于开发者在调试过程中查看和跟踪程序的运行状态。

                                   release编译配置更改为debug

要将默认的release编译配置更改为debug,你可以在GBD命令中添加相应的选项。具体的方法取决于你使用的GBD工具和构建系统。以下是一些常见的做法:                                                                  

  1. 使用Makefile文件进行构建:                                                                                                                                                                                                                                         Makefile中添加  CFLAGS += -g -O0(其中-g表示启用调试信息,-O0表示禁用优化)。                                                                                                                                                       或者 Makefile中编译目标文件 末尾带上 -g                                                                                                                                            
  2. GBD命令行工具进行构建:
         gbd build -j --debug( 是并行构建的线程数)
          
       

2:dgb的使用命令

gdb 的使用作用于可执行程序:

gdb binFile 退出: ctrl + d quit 调试命令:
list l 行号:显示 binFile 源代码,接着上次的位置往下列,每次列 10 行。
listl 函数名:列出某个函数的源代码。
rrun:运行程序。
n next:单条执行。
sstep :进入函数调用
finish:执行到当前函数返回,然后挺下来等待命令
print(p) :打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var :修改变量的值 
info( i) locals :参看当前栈的变量
continue(c):从当前位置开始连续而非单步执行程序(到下一个断点)
bt:从当前位置开始生产栈堆跟踪
run(或 r) :从开始连续而非单步执行程序

break(b)  行号         :在某一行设置断点
break  函数名            :在某个函数开头设置断点
delete breakpoints   :删除所有断点
  
delete breakpoints n:删除序号为n的断点
disable breakpoints  :禁用断点
enable breakpoints  :启用断点
info break :查看断点信息。
info( i) breakpoints :参看当前设置了哪些断点

display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X
breaktrace( bt) :查看各级函数调用及参数
info i) locals :查看当前栈帧局部变量的值

quit :退出 gdb

你可能感兴趣的:(linux,运维,服务器)