这篇文章将gdb的简单使用,通过此篇文章你能学习到使用gdb进行调试程序

在Linux中编写程序时,如何进行程序的debug工作呢?今天来介绍下gdb这个工具,可以在Linux下直接man gdb查看帮助信息

(一)gdb命令介绍

常用命令:

命令 命令缩写 命令说明
run r 开始运行程序,在第一个断点处停住
start st 启动调试,在main函数中第一条语句停住
next n 执行下一行,不会进入函数内部
step s 执行下一条语句,会进入函数
display disp 查看某个变量,每次停下来都会显示它的值
info i 查看程序信息
break b 设置断点
print p 打印变量值
continue c 继续运行程序
set var name=value 设置变量的值
list l 显示程序源码,默认显示10行
kill k 终止程序调试
watch 监视变量值的变化
breaktrace bt 查看函数调用信息
quit q 退出gdb环境

基础操作:
(1)编译调试程序 :gcc -g xxx.c -o xxx
(2)进入gdb环境 : gdb xxx
(3)根据需求执行上面的命令
(4) 退出gdb

(二)实例运行

test.c

#include <stdio.h>int main(int argc, char *argv[])
{int a=0,b=0,c=0;a=1;b=2;c=a+b;printf("a=%d,b=%d,c=%d\n",a,b,c);return 0;
}

zhixia# gcc -g test.c -o test
zhixia# gdb test
通过上面的操作已经进入了gdb环境了
输入list查看代码:从上次位置开始显示,默认一次显示10行

(gdb) list
1   #include <stdio.h>
2
3   int main(int argc, char *argv[])
4   {
5      int a=0,b=0,c=0;
6      a=1;
7      b=2;
8      c=a+b;
9      printf("a=%d,b=%d,c=%d\n",a,b,c);
10     return 0;
(gdb)

设置断点:执行到此位置会停下来
break line/function/
查看断点信息 : info b
删除断点:delete breakpoints 断点号
使能断点: enable 断点编号
失能断点: disable 断点编号

(gdb) break 7
Breakpoint 1 at 0x400551: file test.c, line 7.  //断点编号是1
(gdb) r
Starting program: /root/test/test Breakpoint 1, main (argc=1, argv=0x7fffffffdf78) at test.c:7
7      b=2;

显示变量值:display

(gdb) display a
1: a = 1
(gdb)

单步调试命令:next/step
step n,next n 表示连续单步执行n条指令,如果期间遇到断点,则停下来

(gdb) next
8      c=a+b;
1: a = 1
(gdb) step
9      printf("a=%d,b=%d,c=%d\n",a,b,c);
1: a = 1
(gdb)

打印变量信息print

(gdb) p a
$1 = 1
(gdb)

set var name=value
在程序运行中动态改变变量的值

(gdb) set var a=4
(gdb) p a
$2 = 4
(gdb)

gbd的简单使用(一)相关推荐

  1. 在docker上安装部署tomcat项目 超简单,拿来主义

    在docker中部署tomcat,非常简单,而且省去了手动安装jdk等步骤,只需要将war包复制在容器tomcat实例中的webapps下面即可.以下将详细讲解流程: 在windows中打好包以后用w ...

  2. Linux下tomcat的安装与卸载以及配置(超简单)

    无敌简单的几步 1.安装 //首先你需要下载好tomcat包 sudo tar -xvzf apache-tomcat-7.0.85.tar.gz(这里是包名) -C 你要放的位置 2.卸载 rm - ...

  3. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

  4. Docker的安装、镜像源更换与简单应用

    Docker的安装.镜像源更换与简单应用[阅读时间:约20分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.Docker的安装 四.Docker的简单应用 1. ...

  5. 基于Golang的简单web服务程序开发——CloudGo

    基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...

  6. 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

    博客目录(阅读时间:10分钟) 一.win10 0.系统环境 1. win10配置golang环境 ①下载相关软件 ②创建gowork工作空间 ③配置环境变量(GOPATH+PATH) ④验证环境配置 ...

  7. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  8. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  9. java发送简单邮件_Java程序实现发送简单文本邮件

    /** * Java程序实现发送简单文本邮件 * * @author Administrator * */ public class SendTextMail { // 定义发件人地址 public  ...

  10. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

最新文章

  1. Nexus.js介绍:一个多线程的JavaScript运行库
  2. C语言检查列表是否是回文的算法(附完整源码)
  3. 又重装了系统win8+office2013+sql2012+tfs2012+vs2010+vs2012+xna4+kinectsdk1.6+wp8sdk
  4. M1 mac 使用docker 安装mysql
  5. 下半年值得关注的新机和科技趋势
  6. macOS Recovery中修复磁盘的具体操作方法
  7. 使用vue搭建项目(创建手脚架)
  8. 举例说明计算机网络协议,第二章计算机网络协议与体系结构.ppt
  9. 阿尼亚二次元动漫鼠标指针最新教程+素材打包
  10. python全栈工程师培训_2018.03《Python3全栈工程师》_技术能力内训
  11. realsense相机色彩图与深度图对齐
  12. 用Python教你画一棵绝美碎花树~学会就能送给喜欢的人啦
  13. Stable Diffusion采样速度翻倍!仅需10到25步的扩散模型采样算法
  14. OpenCV图象孔洞内轮廓填充
  15. 在Ubuntu 18.04上安装man中文帮助手册的方法手记
  16. PHPMyWind编辑器支持PowerPoint导入
  17. SEO技术是一个很好的方式来分享和做SEO代码。分享一下keysioncms的调用代码。
  18. 水星路由器wan口ip显示0_wan口状态ip地址为0.0.0.0
  19. 专升本第四讲(计算机的“灵魂”)
  20. about Netdarw

热门文章

  1. 游戏与幼儿教育如何相辅相成
  2. 关系型数据库设计——银行业务管理系统
  3. 苹果电脑恢复服务器上的安装器信息已被破坏,苹果电脑安装软件显示:映像数据已损坏的解决办法...
  4. 一个移动开发老码农的书单
  5. 排序负数排在左边非负数排在右边
  6. 儿童php钢板使用流程,8字钢板半骺板阻滞术治疗儿童下肢成角畸形
  7. 【飞凌和你测评】再次进阶,更高性价比-飞凌iMX6ULL开发板
  8. jhin 不在 sudoers 文件中。此事将被报告。
  9. M3U8视频解密下载
  10. 大数据查询语句SQL