【Linux】编译器gcc g++和调试器gdb的使用(下)

简介: 【Linux】编译器gcc g++和调试器gdb的使用(下)

2.4gdb的常用指令

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  • list/l 函数名:列出某个函数的源代码。
  • r或run:运行程序。
  • n 或 next:单条执行。
  • s或step:进入函数调用
  • break(b) 行号:在某一行设置断点
  • break 函数名:在某个函数开头设置断点
  • info break :查看断点信息。
  • finish:执行到当前函数返回,然后挺下来等待命令
  • print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • 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


下面会使用实例来演示部分指令

244b40cb1e863dcb5e29decea05e2a6a.png

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

f0df8335f4e3056b345be3cefe106f1e.png

  • list/l 函数名:列出某个函数的源代码

3b9dd2982b81a8c7bb32a1dcd64d4f9d.png

  • break(b) 行号:在某一行设置断点
  • info break :查看断点信息
  • break 函数名:在某个函数开头设置断点

2f4086203f79d611ac69d9e2674202fc.png

  • d + 断点编号:删除断点
  • delete breakpoints:删除所有断点

d49ad7387102a7e1e394bbbc881283d6.png

  • r或run:运行程序

a48df1779bf6a82dfeeec0650e85953b.png

  • s或step:进入函数调用

d9b5b104d8e51920384e9e879c3c9f2d.png

  • 进入了AddToVal函数内部,遇到断点停下
  • n 或 next:单条执行

f7b3ef1cb719cac4d32d611c5a96944e.png

  • 每个n执行一行
  • print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数

2dc1448ef692be820913af8b9dfc9e05.png

  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值

cf300cc2b7a8e1bc4e580f6b7c349c76.png

  • undisplay:取消对先前设置的那些变量的跟踪

449a24c5512677aa27fdf0e88c6f029e.png

  • finish/fin:执行到当前函数返回,然后停下来等待命令

f12f361f598b1dbf5d0fd7ba86590d1f.png


3.总结


到此,我们学习了Linux下的基本指令与操作,权限相关的概念,学习了yum工具,能够在Linux下进行软件的安装,学习了vim的使用,能够在Linux下写代码,学习了gcc/g++的使用,能够在Linux下编译代码,学习了gdb的使用,能够在Linux下调试代码,学习了make/makefile,能够在Linux下使用多文件编程,为我们在Linux下编程提供了便利,编写了我们的第一条Linux程序----进度条,学会了使用git命令行,能够把Linux下的代码上传到Gitee/Github上。Linux的工具篇到此结束,下面,我们将会遇到Linux的第一座大山----进程。


抬头是山,路在脚下,与诸君共勉

本章完

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
3月前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
72 1
|
8月前
|
自然语言处理 安全 编译器
深入探索Linux下的luac命令:Lua编译器的奥秘
**探索Linux上的`luac`:Lua编译器详解** `luac`是Lua源代码的编译器,将`.lua`转换为字节码`.luac`,提升执行效率。它通过词法、语法分析生成可移植、安全的字节码。主要特点包括高效、可移植和安全。命令参数如`-l`列出字节码结构,`-o`指定输出,`-s`去除调试信息。使用示例:`luac -o script.luac script.lua`,然后用`lua script.luac`执行。注意版本兼容性,开发时保留调试信息,生产环境优化源代码并备份源文件。
|
8月前
|
NoSQL Linux C语言
GDB:强大的GNU调试器
GDB:强大的GNU调试器
111 0
|
8月前
|
NoSQL 编译器 Linux
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
140 0
|
8月前
|
NoSQL Linux 编译器
Linux基础——Linux开发工具(中)_gcc/g++
Linux基础——Linux开发工具(中)_gcc/g++
50 0
|
8月前
|
自然语言处理 Ubuntu 编译器
使用 `byacc`(Berkeley Yacc)在Linux中构建编译器
本文介绍了如何在Linux中使用`byacc`构建编译器。首先,通过包管理器安装`byacc`,如在Debian/Ubuntu上使用`apt-get install byacc`,在Red Hat/CentOS/Fedora上使用`yum`或`dnf`。接着,定义编程语言的语法(如示例中的简单计算器`calc.y`),然后运行`byacc -d calc.y`生成C代码。最后,编译生成的文件并运行。虽然示例简单,但展示了使用`byacc`创建编译器的基本步骤,实际项目中需处理更复杂语法和实现语义动作。
|
程序员 编译器 Linux
linux gdb-多线程调试
相信使用C/C++语言开发软件的程序猿们都经历过‘栈溢出’的问题。‘栈溢出’问题通常十分的隐蔽,有的时候问题复现也十分的困难。每当软件出现莫名其妙的问题时,总是有人怀疑是不是栈溢出了,但是问题的排查又十分的困难,所以,‘栈溢出’就是广大C/C++开发者的噩梦。
169 0
|
NoSQL IDE Linux
linux gdb-多线程调试
linux下应用程序的调试工具主要就是gdb,可能你已经习惯了IDE形式的调试工具。也许刚开始使用gdb作为调试工具,会有诸多的不变,但是一旦你学会了如何使用gdb你就会被其富有魔力的功能所吸引的,下面开始逐步的学习linux下gdb的使用方式。
458 0
|
9天前
|
Linux
Linux系统之whereis命令的基本使用
Linux系统之whereis命令的基本使用
50 23
Linux系统之whereis命令的基本使用
|
3月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
347 8