0


【Linux】Linux调试器-gdb使用

** 作者:小卢 **

专栏:《Linux》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》


1.背景

在VS中,有两种模式,一种为debug模式,一种为release模式。

debug为可以调试的版本,release为优化后的版本也就是测试版本了

Linux gcc/g++出来的是二进制文件,默认是release版本。

在VS中,我们可以按F10进入调试

在Linux我们依旧可以调试,要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项


2.gdb的使用

2.1如何生成可以调试debug版本的文件:

**gdb 要调试的文件名 **

这里文件gcc生成后默认是release版本,因此是不可以调试的

那如何gcc生成debug版本的文件呢?

-std=c99

2.2如何查看调试信息:

readelf -S mytest

调试信息看不懂怎么办?

**readelf -S mytest | grep -i debug **

查看代码:

| 0

运行 r

打断点

b 数字(行数)

找断点

infor b

删断点

**d 编号 **

设置空断点

disable breakpoint 编号

开启断点

enable breakpoint 编号

退出 quit

逐过程

n(next)

s逐语句

bt

p 变量相当于监视窗口

常显示 display 变量

取消常显示 undisplay


3.gdb调试指令汇总

ist/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
比特科技
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb


标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/m0_69061857/article/details/128839027
版权归原作者 学IT的小卢 所有, 如有侵权,请联系我们删除。

“【Linux】Linux调试器-gdb使用”的评论:

还没有评论