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调试小白教程的更多相关文章

  1. GDB调试器教程

    启动和退出GDBGDB(GNU Project Debugger)几乎适用于所有类Unix系统,小巧方便且不失功能强大,Linux/Unix程序员经常用它来调试程序. 总的来说有几下几种方法启动GDB ...

  2. GDB调试教程

    简介 GDB(GNU debugger)是GNU开源组织发布的一个强大的UNIX下的程序调试工具.可以使用它通过命令行的方式调试程序.它使你能在程序运行时观察程序的内部结构和内存的使用情况.你也可以使 ...

  3. gdb调试带参数程序(转:笑笑小白,cnblog http://www.cnblogs.com/rosesmall/archive/2012/04/10/2440514.html)

    一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要 把调试信息加到可执行文件中.使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点.如: > ...

  4. 使用 GDB 调试多进程程序

    使用 GDB 调试多进程程序 GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较. 3 评论 田 强 (tianq@cn.ibm.co ...

  5. GDB调试详解

    GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具. GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调 ...

  6. [转载]GDB十分钟教程

    转自:http://blog.csdn.net/liigo/article/details/582231/ GDB十分钟教程 作者: liigo原文链接: http://blog.csdn.net/l ...

  7. OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程

    OpenJTAG+Eclipse 3.5+GDB+Mini2440图文教程 OpenJTAG与JLink的区别比较: 相同点:都同时具备USB转JTAG.USB转串口功能 差别: 1. 操作系统: O ...

  8. cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...

  9. 使用gdb调试游戏服务器

    前言 谈论gdb重要性 一般来说.提gdb,命令用于调试."命令",用户是几乎相同的复杂话.而事实确实如此,实际的开发调试必须用到gdb. 如今.大多数Linux系统是存在于ser ...

随机推荐

  1. SpringCloud个人笔记-02-Feign初体验

    项目结构 sb_cloud_product <?xml version="1.0" encoding="UTF-8"?> <project x ...

  2. 攻防世界 web_php_include

    Web_php_include 进入题目源码直接出来了 <?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page'] ...

  3. SQL之创建表

    1.创建表------ (方法一)-------create table Persons(id NUMBER,                                       age NU ...

  4. java1.7之后的比较器特别之处

    在jdk1.7环境下使用Collectons.sort()方法: 比如:Collections.sort(list, new Comparator<Integer>()); 就可能会出现异 ...

  5. 引入css的方式

    ---恢复内容开始--- 引入css的样式及link和@import的区别 有3种引入方式 1.内部样式(写在标签内) 2.内联样式 3.外部样式(link @import) 区别: 1.本质区别:l ...

  6. 解决PHP下载大文件失败,并限制下载速度

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...

  7. drf视图类总结

    ![image](https://img2022.cnblogs.com/blog/2608149/202204/2608149-20220401194236430-447848842.png)

  8. 序列化之Serializer类与ModelSerializer类的使用

    序列化之Serializer类的使用(5星) 作用: 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 反序列化,把客户端发送过来的数据,经过request以后变成字 ...

  9. k8s TLS bootstrap解析-k8s TLS bootstrap流程分析

    当k8s集群开启了TLS认证后,每个节点的kubelet组件都要使用由kube-apiserver的CA签发的有效证书才能与kube-apiserver通信:当节点非常多的时候,为每个节点都单独签署证 ...

  10. Nuxt.js(二、解决首屏速度与SEO)

    Nuxt.js(二.解决首屏速度与SEO) 1.普通的Vue SPA初始化加载速度很慢 在传统的web应用中,当用户请求一个页面时,服务器直接返回一个html文件,浏览器直接渲染出来.但是,在vue应 ...