🕺作者: 主页
我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言
🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!
前言
当我们在vscode
等IDE
上编写代码出错时,通常会进行调试,有些人会通过打印数据来找bug
,有些人则会使用调试工具,然而当我们在Linux
系统中编写代码时却无法这么方便的使用图形化界面调试工具,但还是有调试工具的——gdb
,今天我们就来讲述gdb
的使用~
背景
程序的发布方式有两种,debug
模式和release
模式
Linux gcc/g++
出来的二进制程序,默认是release
模式
要使用gdb
调试,必须在源代码生成二进制程序的时候, 加上-g
选项
如下:
测试代码:
#include <stdio.h>
int add(int a,int b)
{
return a+b;
}
int main() {
int i=0;
int a=1,b=1;
for(i;i<10;++i)
{
printf("hello linux\n");
}
int c=add(a,b);
printf("%d",c);
return 0;
}
配置makefile
文件
gtest-debug:gtest.c
gcc -o gtest-debug gtest.c -g
.PHONY:clean
clean:
rm -f gtest-debug
gdb的使用
调试命令:
gdb gtest-debug
gtest-debug
调试过程中常用的命令:
-
ctrl + d
或quit
:退出 -
list/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
实际应用
看过上面的命令后,我们通过实际的例子来掌握命令的使用。
示例1
gdb gtest-debug
:进入调试
示例2
list/l 行号
:显示gtest
源代码,接着上次的位置往下列,每次列10
行。- 连续回车会执行上次输入的命令
示例3
list/l 函数名
:列出某个函数的源代码。
示例4
r或run
:运行程序。
示例5
break(b)
行号:在某一行设置断点run(或r)
:从开始连续而非单步执行程序n 或 next
:单条执行。
示例6
print ( p )
:打印表达式的值,通过表达式可以修改变量的值或者调用函数p 变量
:打印变量值。continue(或c)
:从当前位置开始连续而非单步执行程序s或step
:进入函数调用
示例7
delete breakpoints
:删除所有断点delete breakpoints n
:删除序号为n的断点info(或i) breakpoints
:参看当前设置了哪些断点
display 变量名
:跟踪查看一个变量,每次停下来都显示它的值undisplay
:取消对先前设置的那些变量的跟踪
示例8
until X行号
:跳至X行
示例9
ctrl + d 或 quit
:退出
文章来源:https://www.toymoban.com/news/detail-638925.html
后记
通过上面对于gdb的例子应该可以让你很容易明白gdb的使用,但是实际学习中,调试并不常用,所以只需要记得个大概就行。文章来源地址https://www.toymoban.com/news/detail-638925.html
到了这里,关于《Linux从练气到飞升》No.09 Linux调试器-gdb使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!