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 ...
随机推荐
- SpringCloud个人笔记-02-Feign初体验
项目结构 sb_cloud_product <?xml version="1.0" encoding="UTF-8"?> <project x ...
- 攻防世界 web_php_include
Web_php_include 进入题目源码直接出来了 <?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page'] ...
- SQL之创建表
1.创建表------ (方法一)-------create table Persons(id NUMBER, age NU ...
- java1.7之后的比较器特别之处
在jdk1.7环境下使用Collectons.sort()方法: 比如:Collections.sort(list, new Comparator<Integer>()); 就可能会出现异 ...
- 引入css的方式
---恢复内容开始--- 引入css的样式及link和@import的区别 有3种引入方式 1.内部样式(写在标签内) 2.内联样式 3.外部样式(link @import) 区别: 1.本质区别:l ...
- 解决PHP下载大文件失败,并限制下载速度
1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...
- drf视图类总结

- 序列化之Serializer类与ModelSerializer类的使用
序列化之Serializer类的使用(5星) 作用: 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 反序列化,把客户端发送过来的数据,经过request以后变成字 ...
- k8s TLS bootstrap解析-k8s TLS bootstrap流程分析
当k8s集群开启了TLS认证后,每个节点的kubelet组件都要使用由kube-apiserver的CA签发的有效证书才能与kube-apiserver通信:当节点非常多的时候,为每个节点都单独签署证 ...
- Nuxt.js(二、解决首屏速度与SEO)
Nuxt.js(二.解决首屏速度与SEO) 1.普通的Vue SPA初始化加载速度很慢 在传统的web应用中,当用户请求一个页面时,服务器直接返回一个html文件,浏览器直接渲染出来.但是,在vue应 ...