Linux调试器-gdb使用

发布时间:2024年01月07日

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 <num_jobs> --debug( <num_jobs>是并行构建的线程数)
? ? ? ? ??
???????

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
文章来源:https://blog.csdn.net/m0_73919066/article/details/135435750
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。