C学习笔记-gdb
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]
C学习笔记-gdb的更多相关文章
- 《软件调试的艺术》学习笔记——GDB使用技巧摘要
<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...
- NDK学习笔记-gdb调试
在做开发的时候,难免会crash,那么在这时候需要进行调试,在C/C++的代码调试中,gdb是很常用的gdb在这不做过多介绍,之前在C语言中已经做过总结,这里简要回顾一下 要使用gdb,在编译的时候需 ...
- MIT 6.828 JOS学习笔记2. Lab 1 Part 1.2: PC bootstrap
Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的.首先我们看一下通常一个PC的物理地址空间是如何布局的: ...
- C语言学习笔记之成员数组和指针
成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下. 单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个 ...
- 【原创】ZYNQ学习笔记(一) HelloWorld实现
拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...
- CC/G++ 学习笔记
CC/G++ 学习笔记 本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细 ...
- GCC/G++ 学习笔记
本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一 ...
- lfs(systemd版本)学习笔记-第3页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-no ...
- lfs(systemv版本)学习笔记-第3页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-n ...
随机推荐
- Django Admin中增加导出Excel功能
参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...
- jQuery的$符号
jQuery使用$的原因是: 书写简洁, 相对于其他字符与众不同, 容易被记住. JQuery占用了两个变量: $ 和 jQuery. 当在代码中打印 $ 和 jQuery时: <script ...
- Spring Cloud Eureka(三):认识Eureka Server 与 Eureka Client
Spring Cloud Netflix 是什么 This project provides Netflix OSS integrations for Spring Boot apps through ...
- Mybatis源码学习之日志(五)
简述 在Java开发中常用的日志框架有Log4j.Log4j2.Apache Commons Log.java.util.logging.slf4j等,这些工具对外的接口并不相同.为了统一这些工具的接 ...
- CF427D
CF427D SA的奇技淫巧,其实就是板子. 题意: 给定两个字符串,求最短的满足各只出现一次的连续公共字串 解析: 一般情况下,SA都是用来求最长公共前缀的,好像和这道题所求的最短公共子串没有任何关 ...
- shell之列表的定义与循环
字符串列表定义方法1: a=(f1 f2 f3 f4)for i in ${a[*]}#遍历每一个列表值 for i in ${a[@]}#等价与上一句 实例: #!bin/basha=(f1 f2 ...
- jsp页面,使用Struts2标签,传递和获取Action类里的参数,注意事项。<s:a action><s:iterator><s:param>ognl表达式
在编写SSH2项目的时候,除了使用<s:form>表单标签向Action类跳转并传递参数之外,很更多时候还需要用到<s:a action="XXX.action" ...
- 打印li索引值
<ul> <li>这是第一条alert(0)</li> <li>这是第二条alert(1)</li> <li>这是第三条aler ...
- 空指针/0/NULL
空指针/0/NULL 空指针是一个被赋值为0的指针,在没有被具体初始化之前,其值为0. NULL 是一个标准规定的宏定义,用来表示空指针常量. #define NULL 0 或者 #define ...
- No suitable constructor was found in NUnit Parameterised tests
No suitable constructor was found in NUnit Parameterised tests Fairly obvious, but can also happen i ...