GDB 使用教程(二)
将指定区间内的元素相加:
#include <stdio.h>
int add_range(int low, int high)
{int i, sum;for (i = low; i <= high; ++i)sum += i;return sum;
}int main(void)
{int res[3];res[0] = add_range(1, 10);res[1] = add_range(1, 100);printf("res[0] = %d, res[1] = %d\n", res[0], res[1]);return 0;
}
然后编译,执行时,输出
res[0] = 55, res[1] = 5150
第一个结果正确,第二个结果显然不正确,应为 5050,高斯几百年前就告诉我们了。
在编译时要加上 -g 选项,生成的可执行文件才可能用 gdb 进行源码级调试:
$ gcc -g main.c -o main
$ gdb main
...
(gdb)
- (1)
(gdb) list 1
从第一行开始列出源代码,一次只显示 10 行,list
可简写为l
- (2)gdb 提供了一个很方便的功能,在提示符下直接按回车表示重复上一条命令;
- (3)
start
命令开始执行程序(注意s
是step
的简写,原因很简单,step
要比start
更常用),gdb
停在 main 函数中变量定义之后的第一条语句处等待我们发命令 - (4)
n
(next),逐过程执行; - (5)
bt
(backtrace),查看函数调用的栈帧; (6)
i
(info)查看 add_range 函数局部变量的值(gdb) i locals ...
(6)
f
(frame)指定栈帧号(gdb) f 1 ...
- (7)
p
(print) - (8)
finish
命令让程序一直运行到从当前函数返回为止; - (9)
set var sum=0
GDB 使用教程(二)相关推荐
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...
- Konstrukt PHP REST框架 教程二
Konstrukt PHP REST框架 教程二 入门 - 第2部分 在本教程中,我们假设你已经完成了第一个教程,因为它的基础上产生的代码从该. 谈判的Content-Type 在大多数情况下会发出一 ...
- Mac下Android studio 之NDK配置教程(二)
Mac下Android studio 之NDK配置教程(二) (一)简述 从上一篇NDK配置教程(一) 中,我 简单的阐述了MAC下NDK的基本解压和环境配置步骤. 本节我讲详细描述android s ...
- python elasticsearch 入门教程(二) ---全文搜索
python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...
- openlayers地图旋转_OpenLayers教程二:实现简单的地图显示
本文衔接上一篇文章:不睡觉的怪叔叔:OpenLayers教程二:实现简单的地图显示zhuanlan.zhihu.com 经过上一篇文章对OpenLayers的简单了解以后,现在让我们来实现一个简单的 ...
- 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc
计算机JAVA教程二讲Java语言基础知识 2.1简单数据类型 2.1.1 标识符和保留字 1.标识符 程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier).Java语言 ...
- 【听歌】GDB入门教程之查看函数调用堆栈
写在前面:又到周末啦~上上周忍痛买了个雅马哈声卡和 AKG 话筒,这周六才正式打开试用了下,效果还不错,我自己还挺享受的.不过这玩意儿太高端,还不会用 AI 调音.小伙伴们感觉下这首加了一点点电音效果 ...
- GDB调试教程:1小时玩转Linux gdb命令
原文链接:http://c.biancheng.net/gdb/ GDB 入门教程 本教程以下面的代码为例,在 Linux 系统下来讲解 GBD 的调试流程: int main (void) {uns ...
- Java 结构体之 JavaStruct 使用教程二 JavaStruct 用例分析
使用环境 前一篇在介绍 JavaStruct 类时指定了使用库使用环境为 Java 5 及以上,也即开发我们使用的 JDK 版本为1.5及以上就可以了.以下讲解的用例可以直接将 code 直接粘贴到 ...
- C#微信公众号开发系列教程二(新手接入指南)
此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...
最新文章
- InnoDB体系结构
- 《LeetCode力扣练习》第75题 颜色分类 Java
- ubuntu shell实现99乘法表
- Python Study:GUI-Tkinter
- 推荐一个网站拿下机器学习优质资源!搜索效率极大提高
- git之一: 在windows下安装git和使用总结
- 求旋转数组的最小数字C++
- 众辰nz200变频器使用说明书_ABB变频器
- 浅谈web开发以及django的安装和入门
- mongodb java 开源_开源的Mongodb java client -- mango发布
- MySQL 面试,必须掌握的 8 个知识点
- InstallAnywhere制作出来的安装包在64位机上无法卸载
- ubuntu16.04系统上安装CAJViewer方法步骤教程详解
- 部门开始做技术talk
- k6前级效果器怎么用_【易开EK-K6 DSP 专业 数字前级效果器 前置】价格_厂家_图片 -Hc360慧聪网...
- wps页眉怎么设置不同页码_wps版word怎么从第二页设置页眉页脚
- 用友U9V28应用中设置sa密码问题
- 陷阱技术探秘 ──动态汉化Windows技术的分析
- Linux命令--mkdir命令:创建目录(文件夹)
- nginx redmine_Ubuntu / Redmine / Nginx / Mongrel / Supervisord