当前位置: 首页 > news >正文

GDB的调试

gdb调试技巧
Debug 版本
Debug 版本为可调式版本,生成的可执行文件中包含调试需要的信息。我们作为开发人员,最常用的就是 debug 版本的可执行文件。
Debug 版本的生成:
因为调试信息是在编译过程时加入到中间文件(.o)中的,所以必须在编译时控制其生成包含调试信息的中间文件。
gcc -c hello.c -g —> 生成包含调试信息的中间文件
gcc -o hello hello.o
或者 gcc -o hello hello.c -g

Release 版本
Release 版本为发行版本,是提供给用户使用的版本。用 gcc 默认生成的就是 Release 版本。
首先将源代码编译、链接生成 Debug 版本的可执行文件,然后通过‘gdb Debug 版本的可执行文件名’进入调试模式。

调试程序:
调试的对象是:可执行程序;
在linux下调试需要
调试程序 : gdb
编译时需要增加调试信息 -g(变为debug版本)

gdb中常用的命令:


l显示代码;b+行号设置断点;info break查看断点信息;d 1 删除断点1;r启动程序;r -d;n单步执行,p打印,q退出;s进入函数;finish退出函数;c跳出循环一直运行而非单步到下一个断点停止C后没有断点程序执行到结束;bt当程序发生段错误时,GDB会停在错误发生的位置,你可以使用backtrace命令来查看堆栈跟踪信息,帮助你找到错误的源头;set print elements 0 
设置数组元素的最大打印数量。GDB 默认只显示数组的前 200 个元素(具体数量可能因版本而异),超过部分会用省略号 ... 代替。
参数 0 表示不限制打印数量,即显示完整的数组内容。

gdb 打印变量相关操作

格式	说明	示例
x	十六进制(hex)	p /x num
t	二进制(two's complement)	p /t num
d	十进制(decimal)	p /d num
s	字符串(string)	p /s str

gdb打印地址内存

一、直接打印指针变量
指针变量存储的就是内存地址,直接打印即可:gdb
(gdb) p ptr
$1 = (int*) 0x7fffffffe3fc  # 输出指针值(内存地址)
二、获取变量的内存地址
使用 & 运算符获取变量的地址:gdb
(gdb) p &var
$2 = (int*) 0x7fffffffe3f8  # 输出变量var的内存地址
三、以十六进制格式显示地址
使用 /x 修饰符强制以十六进制格式打印:gdb
(gdb) p/x ptr
$3 = 0x7fffffffe3fc(gdb) p/x &var
$4 = 0x7fffffffe3f8四、查看内存地址处的内容
使用 x 命令(examine memory)查看指定地址的内存内容:gdb
(gdb) x/4xw 0x7fffffffe3f8  # 查看地址处4个字(word)的十六进制内容
0x7fffffffe3f8: 0x00000001 0x00000002 0x00000003 0x00000004

如何gdb一个正在运行的程序

#查看进程id
1,ps axf | grep chengxu 
2,gdb -p 进程id

相关文章:

  • 11. 试学内容-如何理解隔离性2(原理)
  • Android 颜色百分比对照
  • C#编程过程中变量用中文有啥影响?
  • 23树与左倾红黑树
  • 飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题
  • SpringCloudAlibaba微服务架构
  • 《T/CI 404-2024 医疗大数据智能采集及管理技术规范》全面解读与实施分析
  • 0. MySQL在Centos 7环境安装
  • 区块链技术发展现状与应用前景分析
  • c++返回对象,返回引用,返回指针有什么区别?
  • spel 多层list嵌套表达式踩坑记
  • Spring AI入门及案例、模型讲解、向量化和RAG等高级应用…
  • 每日Prompt:每天上班的状态
  • 如何在 HTML 中添加按钮
  • Kafka入门-集群基础环境搭建(JDK/Hadoop 部署 + 虚拟机配置 + SSH 免密+Kafka安装启动)
  • 乾元通渠道商中标西藏2024年应急装备采购配置项目
  • SSM 框架核心知识详解(Spring + SpringMVC + MyBatis)
  • Sql Server 中常用语句
  • 数据结构第八章(一) 插入排序
  • 李飞飞World Labs开源革命性Web端3D渲染器Forge!3D高斯溅射技术首次实现全平台流畅运行
  • 潍坊市网站制作/怎么提交百度收录
  • 网站源码 一品资源网/网站首页排名seo搜索优化
  • 学校网站的图片轮播怎么做/湘潭网页设计
  • 网站2019建设目标/最近营销热点
  • 什么做自己的网站/百度站长工具网站
  • 照明网站建设/优化关键词排名外包