06.gdb入门(下)
◊基本框架:
a) 查看运行时数据
b) 程序错误类型
c) Gdb调试段错误
d) Core文件调试
6.1 查看运行时数据
1) print 查看变量值
2) ptype 查看变量类型
3) print array 查看静态数组
4) print *array@len 查看动态内存(malloc),也可以查看静态数组。
5) print x=5 动态改变运行时数据
6.2 程序错误类型
1) 编译错误: 程序语法上的错误,可以借助gcc来查找错误。
2) 运行时错误:编译器检查不出来,但在运行时可能会导致程序崩溃。
比如说:非法的地址访问。
3) 逻辑错误:编译和运行都很顺利,但是程序没有干它该干的事。
6.3 Gdb调试段错误
段错误是由于访问非法地址而产生的错误,主要有两种:
1) 访问系统数据区
例如:往系统保护的内存地址写数据;
2) 内存越界
例如:数组越界,访问到不属于该数组的内存区域。
注意:写程序的时候要尽量避免内存越界,因为有时候即使内存越界了,系统也不报错。
6.4 Core文件调试
1)core文件
把进程崩溃时的当前内存状态信息(内存印象)输出到core文件(进程的尸体)里,然后可以将出错的可执行文件和core文件提交给gdb,这样就可以精准定位错误。
Core文件的生成过程叫做core dump。
2) 设置生成core文件
Ulimit –c 查看系统默认生成的core文件的大小。
Ulimit -a 查看所有的参数状态
Ulimit -c unlimited 将默认生成的core文件大小设置成无限制。
3) Gdb利用core文件调试
首先:Gdb +可执行文件 +core文件;
然后:利用bt(backtrace)命令把出错处的函数调用关系找出来.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!