C学习笔记-gdb
2024-09-05 10:20:41
gdb即GNU debugger,用来调试程序
gdb使用前提
要使用gdb,则需要在编译源代码时候使用-g
参数
gcc -g –o test test.c
启动gdb
gdb 程序名 [corefile]
corefile是可选的,但能增强gdb的调试能力
Linux默认是不生成corefile的,所以需要在用户profile文件中添加ulimit -c unlimited
,修改完成之后让profile文件及时生效
另外程序错误时候会生成core或者core.*文件,也可作为其参数
gdb的使用
快速定位软件出错位置
- 启动gdb调试错误
gdb test core
- 关闭多余软件信息
gdb -q test core
如果软件出错,就会打印出出错的语句
使用gdb调试
- 启动gdb
gdb test
- 运行程序
(gdb) run
- 显示导致段错误的执行函数树
(gdb) where
- 显示包含错误附近代码
(gdb) list [m,n]
m,n为可选参数,表示起始行和结尾行
不带参数默认显示附近10行
- 显示表达式、变量的值
(gdb) print 变量(表达式)
(gdb) print 'file'::变量(表达式) ##''是必须的,以便让gdb知道指的是一个文件名。
(gdb) print funcname::变量(表达式)
e.g.
(gdb) print i
- 变量的类型
(gdb) whatis i
- 结构的定义
(gdb) ptype st
gdb的断点使用
- break命令设置断点
break linenum
break funcname
break filename:linenum
break filename:funcname
- 进入gdb调试模式
gdb -q test
(gdb) break 5
(gdb) run
以上是进入gdb调试,在代码第5行设置断点,运行程序
- 查看已设置断点
(gdb) info break
- 从断点以后继续执行
(gdb) continue
- 删除一个断点
(gdb) delete
- 改变一个变量的值
(gdb) set variable varname = value
- step命令
当遇到一个函数的时候,step将进入函数,每次执行一条语句,相当于step into
(gdb) step
- next命令
当遇到一个函数的时候,next将执行整个函数,相当于step over
(gdb) next
- return [value]命令
停止执行当前函数,将value返回给调用者,相当于step return
(gdb) return [value]
最新文章
- Exit code from container executor initialization is : 24 ExitCodeException exitCode=24: Configuration file ../etc/hadoop/container-executor.cfg not found.
- Java输入/输出流体系
- 面试题整理:C#(二)
- sqlserver中创建包含事务的存储过程
- 转:CSS布局奇淫技巧之-宽度自适应
- C# lesson1
- 转换器4:手写PHP转Python编译器,语法解析部分
- 聊聊Java中几种常用的设计模式
- redis绑定ip以及启动和查看启动状态
- 【mongodb系统学习之一】mongodb的简单安装
- C#-Xamarin的Android项目开发(三)——发布、部署、打包
- 转载:Linux命令之查看文件占用空间大小-du,df
- mininet安装过程记录
- vue-地址插件 v-region
- web前端面试题题目
- 斗地主 ai的一些资料
- stenciljs 学习八 组件测试
- 16 MySQL--正确使用索引
- 使用Git进行代码管理心得------------个人练习
- Django---时间的时区问题
热门文章
- 2018多校第九场 HDU 6416 (DP+前缀和优化)
- git下载代码的两种方式以及eclipse集成git
- Java项目出现的问题--实际项目01
- JSP大文件分片上传
- Bzoj 1798: [Ahoi2009]Seq 维护序列seq(线段树区间操作)
- tomcat使用实践三种运行模式之apr
- typedef void (*funcptr)(void)的含义
- bash脚本中使用选项 getopts
- Yet Another Division Into Teams
- LVS集群之IP TUN模式以及网站压力测试