C语言-gdb调试工具详解
回车 重复上一次命令
产生可调试的可执行文件:
gcc -g main.c -o main, 必须加上-g选线, 表示在可执行文件中加入源文件信息, 但并不是将源文件嵌入可执行文件, 所以在调试时必须保证gdb能够找到源文件
进入调试:
gdb fname, 进入fname可执行文件的调试环境
查看源文件代码:
l/list n/func/fname:n/fname:func
查看详细信息:
i/info 查看一个断点|变量等的详细信息
调试步骤:
start 开始时使用, 开始运行程序, 停在main函数第一行语句前面等待命令
r/run 开始时使用, 从头开始连续运行程序, 连续执行程序, 直到遇到断点
n/next 下一行, 但是不进入函数调用
s/step 下一行, 并且进入函数调用, 即如果有函数调用则进入到函数中
c/continue 继续执行程序, 直到下个断点
fini/finish 继续运行至当前栈帧/函数完成
bt/backtrace 打印运行时堆栈
变量信息管理:
p/print 变量名, 打印变量的值
display 变量名, 使得程序每次停下来都会显示变量的值
x/nbx 变量名, 查看从变量名开始的n个字节, 例x/7bx input 表示查看从变量input开始的7个内存单元的内容
set var 变量名=变量值, 如 set $p = *($esp)
查看函数堆栈:
bt/backtrace 查看函数调用的信息
f/frame n, n为栈的层次, 然后可以用其他命令(info)查看此级别的变量信息, 可以使用bt先列出栈中的函数调用信息, 然后使用f n在栈函数之间进行切换
断点管理:
b/break n/func/fname:n/fname:func if 条件, 设置断点-可以用/不用if条件
i/info breakpoints, 查看设置的断点信息
delete breakpoints n/func..., 删除断点
enable breakpoints n/func..., 使断点生效
disable breakpoints n/func..., 使断点失效
退出gdb:
q/quit
参考:
http://blog.csdn.net/nixiangxiren/article/details/6935052
http://www.cnblogs.com/kzloser/archive/2012/09/21/2697185.html
C语言-gdb调试工具详解的更多相关文章
- C语言内存对齐详解(2)
接上一篇:C语言内存对齐详解(1) VC对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式.VC 中提供了#pr ...
- C语言内存对齐详解(3)
接上一篇:C语言内存对齐详解(2) 在minix的stdarg.h文件中,定义了如下一个宏: /* Amount of space required in an argument list for a ...
- c语言贪吃蛇详解3.让蛇动起来
c语言贪吃蛇详解3.让蛇动起来 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 上次 ...
- c语言贪吃蛇详解-2.画出蛇
c语言贪吃蛇详解-2.画出蛇 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 蛇的身 ...
- c语言贪吃蛇详解1.画出地图
c语言贪吃蛇详解-1.画出地图 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识点. 首先 ...
- c语言贪吃蛇详解5.GameOver功能与显示成绩
c语言贪吃蛇详解5.GameOver功能与显示成绩 以前我们已经做出来了一个能吃东西变长的蛇.不过它好像不会死... 现在就来实现一下game over的功能吧. 写个函数判断蛇是否撞到自己或者撞到墙 ...
- c语言贪吃蛇详解4.食物的投放与蛇的变长
c语言贪吃蛇详解4.食物的投放与蛇的变长 前几天的实验室培训课后作业我布置了贪吃蛇,今天有时间就来写一下题解.我将分几步来教大家写一个贪吃蛇小游戏.由于大家c语言未学完,这个教程只涉及数组和函数等知识 ...
- 一个简单的C语言程序(详解)
C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h> int main(void) //一个简单的 C程序 { int num; //定义一个名为 ...
- [转帖]rename(Perl语言版本) 详解
rename(Perl语言版本) 详解 2019-03-19 22:51:23 wayne17 阅读数 464更多 分类专栏: Ubuntu之路 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
随机推荐
- IP自动切换脚本
@echo off & cls & color 47 & mode con cols=80 lines=25 & title [IP自动切换工具]clsecho. ec ...
- mysql 保留点
例子如下: 在ticket表中先删除trainID=868的数据,设置一个保留点,然后插入一行数据,发现在插入数据插错了,这个时候我们的保留点就可以排上用场了,即rollback到保留点,而不是直接r ...
- CF 1005B Delete from the Left 【模拟数组操作/正难则反】
You are given two strings s and t. In a single move, you can choose any of two strings and delete th ...
- luogu P1038借教室【Noip提高组2012】
这道题我读完题目的第一感觉是: 这不就是个线段树??用线段树维护区间最小值,检查是否满足订单要求即可判断. 对于修改操作直接在区间上进行. 据说会卡一卡线段树,但是貌似写一个懒标记,连zkw线段树都不 ...
- SPOJ BGSHOOT - Shoot and kill (线段树 区间修改 区间查询)
BGSHOOT - Shoot and kill no tags The problem is about Mr.BG who is a great hunter. Today he has gon ...
- Exercise03_12
import java.util.Scanner; public class Palindrome { public static void main(String[] args){ int a; S ...
- Java生成扫描可以生成手机号名片的二维码
(1)需求:用户通过扫描pc端网站后台管理系统的二维码获取对接人的相关信息,主要是是手机号信息,达到点击可以直接打电话或者将对接人的信息直接保存到通讯录 注:源码来源:https://blog.csd ...
- binlog监听工具-canal
官网 https://github.com/alibaba/canal/wiki
- 集合视图UICollectionView 介绍及其示例程序
UICollectionView是一种新的数据展示方式,简单来说可以把它理解成多列的UITableView.如果你用过iBooks的话,可 能你还对书架布局有一定印象,一个虚拟书架上放着你下载和购买的 ...
- js splice()方法
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 实例 例子 1 在本例中,我们将创建一个新数组,并向其添加一个元素: <script ty ...