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 ...
随机推荐
- elementUI 上传文件图片大小加了限制后 仍然上传了
https://blog.csdn.net/chanlingmai5374/article/details/80558444 看了这位老哥的说法 在看看文档 才发现自己没认真看文档 <el-u ...
- 最小安装的centos7下安装oracle 12c
下载 oracal 安装包 进入https://www.oracle.com/index.html 依次选择-->Menu -->Downloads and trials -->D ...
- 题解 【Uva】硬币问题
[Uva]硬币问题 Description 有n种硬币,面值分别为v1, v2, ..., vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值 ...
- shell拷贝文件到另一台机器
#!/bin/bash data=$(date "+%Y-%m-%d %H:%M:%S") ip='192.168.10.14' password='fan' gitBak='/v ...
- Codeforces Round #455 (Div. 2) D题(花了一个早自习补了昨晚的一道模拟QAQ)
D. Colorful Points You are given a set of points on a straight line. Each point has a color assigned ...
- PHP mysqli_field_count() 函数
定义和用法 mysqli_field_count() 函数返回最近查询的列数. 假设我们有一个 "websites" 表,其中有 5 个字段 20 行记录.返回最近查询的列数: & ...
- 多线程中volatile关键字的作用
原文链接:https://blog.csdn.net/xuwentao37x/article/details/27804169 多线程的程序是出了名的难编写.难验证.难调试.难维护,这通常是件苦差事. ...
- HGOI20191115 模拟赛 题解
Problem A 表演 有$n$个有点权的点,$m$个有边权的边.对于每个点$u$,输出从这个点出发到$v$,其路径权值的两倍加上v的点权和最小的值. 对于$100\%$的数据,满足$1 \leq ...
- [Linux]虚拟机无法安装deepin15.9的解决方案
虚拟机deepin15.9无法安装 sda assuming drive cache write through 显示内存不行,重启仍然无法安装 解决方案: 选择全盘安装方式 如果有全屏问题,需安装v ...
- Java写入的常用技巧(二)
在一般从流接收数据写入介质的场景中,大部分存在每批次数据较小,导致小文件较多的问题. 一般考虑设置一个缓冲池,将多个批次的数据先缓冲进去,达到一定大小,再一次性批量写入 //公共缓冲池和缓冲池大小,如 ...