GDB调试小白教程
1.GDB是什么?
想必很多人都用过windows下各种编译器软件的调试功能,例如Visio Studio里面“断点”、“开始调试”、“逐语句”、“逐过程”
这些功能在其他的编译器软件里名字可能不同,但功能都大同小异,都是为了能够跟踪程序的执行过程,从而监视程序中感兴趣的变量值等。但是在Linux系统下进行软件开发时,往往是在终端命令行模式下进行的,因此如何在命令行模式下进行程序的调试就是一个问题。此时,GDB闪耀登场。
GDB全称GNU Debugger,GNU调试器,是GNU开源组织发布的一个强大的UNIX下的程序调试工具。GDB是通过一些命令实现“断点”、“开始调试”等功能。
2. 常见功能与命令如下:
命令 | 功能 |
---|---|
l | list,从第一行开始例出原码。 |
空格 | 命令同上一句 |
break | 设置断点,break 10 表示在第10行设置断点,break func 表示在函数func()入口处打断点 |
r | run,运行程序 |
n | next,单条语句执行 |
c | continue,继续运行程序到下一个断点处 |
p | print,p var 表示打印var的值 |
bt | 查看函数堆栈 |
finish | 退出当前函数 |
q | quit,退出GDB |
3.举例
3.1 测试用程序
#include <iostream>
#include <string>
int calSum(int num) {
int sum = 0, j;
for(j = 1; j < num; j++) {
sum += j;
}
return sum;
}
int main(void) {
int i;
long result = 1;
for(i = 1; i <= 10; i++) {
result *= i;
}
std::cout<<"10的阶乘等于" + std::to_string(result) << std::endl;
std::cout<<"1到10的和等于" + std::to_string(calSum(10)) << std::endl;
}
3.2 使用截图
4.参考:
左耳朵耗子陈皓大神的:用GDB调试程序
GDB调试小白教程的更多相关文章
- GDB调试器教程
启动和退出GDBGDB(GNU Project Debugger)几乎适用于所有类Unix系统,小巧方便且不失功能强大,Linux/Unix程序员经常用它来调试程序. 总的来说有几下几种方法启动GDB ...
- GDB调试教程
简介 GDB(GNU debugger)是GNU开源组织发布的一个强大的UNIX下的程序调试工具.可以使用它通过命令行的方式调试程序.它使你能在程序运行时观察程序的内部结构和内存的使用情况.你也可以使 ...
- gdb调试带参数程序(转:笑笑小白,cnblog http://www.cnblogs.com/rosesmall/archive/2012/04/10/2440514.html)
一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要 把调试信息加到可执行文件中.使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点.如: > ...
- 使用 GDB 调试多进程程序
使用 GDB 调试多进程程序 GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较. 3 评论 田 强 (tianq@cn.ibm.co ...
- GDB调试详解
GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具. GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调 ...
- [转载]GDB十分钟教程
转自:http://blog.csdn.net/liigo/article/details/582231/ GDB十分钟教程 作者: liigo原文链接: http://blog.csdn.net/l ...
- OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程
OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程 OpenJTAG与JLink的区别比较: 相同点:都同时具备USB转JTAG.USB转串口功能 差别: 1. 操作系统: O ...
- cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)
链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...
- 使用gdb调试游戏服务器
前言 谈论gdb重要性 一般来说.提gdb,命令用于调试."命令",用户是几乎相同的复杂话.而事实确实如此,实际的开发调试必须用到gdb. 如今.大多数Linux系统是存在于ser ...
随机推荐
- Numpy中重要的广播概念
Numpy中重要的广播概念 广播:简单理解为用于不同大小数组的二元通用函数(加.减.乘等)的一组规则 广播的规则: 如果两个数组的维度数dim不相同,那么小维度数组的形状将会在左边补1 如果shape ...
- C/C++头文件以及避免头文件包含造成的重定义方法
C 头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享.有两种类型的头文件:程序员编写的头文件和编译器自带的头文件. 在程序中要使用头文件,需要使用 C 预处 ...
- STM32 标准库
CMSIS 标准及库层次关系 因为基于Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异,这些差异却导致软件在同内核,不同外设的芯片上移植困难.为了解决不同的芯片厂商生产的Co ...
- Centos7 离线安装 KVM,并安装 Csr1000v
最近需要在客户环境搭建 csr1000v,客户环境不能联网,同时使用 kvm 管理.所以需要离线安装 kvm,在利用 kvm 安装 csr100v ,中间遇到不少坑,现记录如下. 所有安装步骤是在 r ...
- template7入门教程及对它的一些看法
template7是framework7的内置模板引擎,在此之前使用过jquery-tmpl,不过刚刚打开github看了下,已经停止更新,并且将要被JsRender所替代.妹的,JsRender又是 ...
- mysql实现in子句的limit查询 (转)
在supesite里面执行一个SQL语句: select * from supe_spaceitems where catid=98 and itemid not in(select itemid f ...
- vue常用知识点总结
感谢本文引用链接的各位大佬们,小菜鸟我只是个搬运工 1.谈一谈你理解的vue是什么样子的? vue是数据.视图分离的一个框架,让数据与视图间不会发生直接联系.MVVM 组件化:把整体拆分为各个可以复用 ...
- python-爬楼梯
[题目描述] 假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法. [练习要求]请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释. [ ...
- 每日所学之自学习大数据的Linux环境配置2
今天设置网络 出现报错 明天找时间解决 不用解决了 刚才试了以下 又能下载了 描述一下问题: cannot find a valid baseurl for repo:base/7/x86_64 如果 ...
- Androd点击一个选框取消其他选框
说明: 我做的体温填报系统需要在填报体温时勾选有无特殊情况 当勾选'无'时需要将用户勾选的其他选框取消 当勾选其他选框时需要将'无'这个选框取消 效果: 代码: addTem.xml <Line ...