linux gdb基本概念

GDB是一个功能强大的调试器,它是一个自由软件,能够用在许多UNIX平台上。它同时也是Linux系统中的默认调试器。GDB已被移植到许多其他的计算机平台上,并且能够用于调试嵌入式实时系统。一般来说,GDB主要可以帮助我们完成以下四个方面的功能:  1, 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2,可以让被调试的程序在你所指定的断点处停住。  3, 当程序被停住时,可以检查此时你的程序中所发生的事情。 4, 动态的改变你程序的执行环境。  与图形化的调试工具相比,GDB具有如下优点: GDB的启动速度比GUI快很多,当只需要快速检查代码中的某项内容时,这就是一 个很重要的优点。在与Eclipse比较时,这种启动时间上的差距很大。

下面我在自己虚拟机上的一个进程拷贝的代码进行的实验

gcc main.c -g -o app

gdb app

之后我们就可以使用gdb进行调试了

run全速执行,start开始执行,这两个命令如果有命令行参数的话最好加上(建议)

启动界面

start直接执行到了67行

list:可以查看代码

list+num可以指明查看哪一行代码

听过break可以打断点,info breakpoints可以查看我们用了哪些断点,delete breakpoints可以取消断点,这里我们需要注意一个问题就是,在virtual studio中的断点,如果关闭了下次打开仍然存在,但是这里如果关闭了下次就不会存在了

相对应的,vs中有监禁的功能,就是监视变量,display就有这个功能,info display可以查看我们监视了哪些变量,之后我们每次next和step的时候,都会在最后几行显示监视的变量,delete就是删除了

step就是按语句调式,next就是按照过程调式

set var 变量名=值  可以中途改变变量的值,

printf可以中间输出变量的值

backtrace( bt )显示程序的层次关闭,与函数调用栈帧,下面75行到26行跳到了另外一个函数,这样可以使用backtrace就可以看层次关系,两个函数使用不同的栈,所以我们使用print argc的时候不好使,我们可以通过frame临时跳到main中,

在一盒函数中我们使用finish可以挑战到调用的开始位置

x(x/20wx)可一查看内存,20表示查看20字节,w表示word,x表示十六进制

continue  如果使用断点的话我们使用continue可以按照断电进行

set follow-fork-mode (child or parent)  调用父进程子进程

core启用core文件,帮助调试

在编译运行app的时候,如果有问题,会生成一个core文件通过gdb core会直接发现错误,这种方法非常方便,但是core的文件特别大

quit退出调试

时间: 2024-12-17 15:40:02

linux gdb基本概念的相关文章

linux信号基本概念及如何产生信号

linux信号基本概念及如何产生信号 摘自:https://blog.csdn.net/summy_j/article/details/73199069 2017年06月14日 09:34:21 阅读数:4131 标签: linux信号 更多 个人分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/summy_J/article/details/73199069 阅前须知 本文的主要内容有: 1.信号的基本概念(包括进程对信号的3

Linux HTTP 基本概念 (1)

APACHE的简介 APACHE是世界上最流行的Web服务器软件之一,当然,提供WWW服务的还有微软的IIS,它是由微软开发的,只能用在微软的操作系统上,而APACHE是一个自由软件.说到APACHE,还要联想到LAMP,这个近年来也是应用得非常广泛,LAMP就是:linux+apache+mysql+php.Apache的特点是简单.速度快.性能稳定. APACHE端口: TCP     80 HTTP相关的配置文件 服务目录                # /etc/httpd/ 主配置文

Linux GDB调试全面解析

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序. 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式. 当程序被停住时,可以检查此时程序中所发生的事,并追索上文. 动态地改变程序的执行环境. 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须.而且,调试内核和调试应用程序时使用的gdb命令是完全相同的,下面以代码清单22.2的应用程

Linux负载均衡概念与实践(一)

根据网上文章整理. 负载均衡软件LVS(Linux Virtual Server)概念篇 lvs是在linux操作系统基础上建立虚拟服务器,实现服务节点之间的负载均衡.它是基于linux内核实现的.2.6.X内核默认集成了lvs模块. lvs常用负载均衡的实现是基于ip协议的,所以一般称为ipvs. IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能.当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它.此后通过查发报文的IP和TCP报文头地址,保证

Linux GDB常用命令一栏

Linux GDB 常用命令如下: 1.启动和退出gdb (1)启动:gdb ***:显示一段版权说明: (*** 表示可执行程序名) (2)退出:quit.有的时候输入quit后会出现相关提示:类似于“(y/n)”,输入y 2.显示和查找程序源代码 (1)list :显示10行代码,但是我为什么没有显示成功呢? (2)list 5,10:显示源文件第五行到第十行的代码 (3)list t4.c:5,10:显示源文件中第五行到第十行的代码,在跳是含有多个源文件的次序时使用: (4)list ge

LInux软硬链接概念

一.LInux软硬链接概念 Linux链接分为符号链接(Symbolic Link)也叫软链接和硬链接(Hard Link)两种,默认情况下,ln命令会产生硬链接. 二.软连接     1.创建软连接命令:ln -s sourcefile newfile     2.简介: 软链接又叫做符号链接,软链接文件有类似于Wondows的快捷方式.它实际上是一个特殊的文件.     3.连接件特点: 3.1? 可以链接任何文件或者目录,还可以链接不同文件系统的文件或者目 3.2? 要链接文件时,新文件是

Linux GDB程序调试工具使用简介

GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓"寸有所长,尺有所短"就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) 当程序被停住时,

Linux集群概念简介

集群的概念 什么是集群? 集群是一组协同工作的服务实体,用以提供比单一服务实体更具有扩展性和可用性的服务平台.所谓服务实体说白了就是服务器.因此,多台服务器同时协同工作,在某种情况下,可以大大提升服务的能力. 集群的类型 根据不同的需求以及应用场景,集群分为三种类型: 负载均衡集群:Load Balancing,简称LB集群,它是根据调度器或者分发器(Director)中的某种调度算法,将客户端发送过来的请求转发给后台的真实服务器进行处理,从而达到负载均衡的能力.该集群主要是提高服务器的高负载服

Linux GDB 程序调试工具使用详解

转自    http://www.codeceo.com/article/linux-gdb-tools.html 整理的挺全的 GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自