Linux下:gcc/g++调试工具gdb

gdb

  • 程序的发布方式有两种,debug模式和release模式

  • Linux gcc/g++出来的二进制程序,默认是release模式

  • gdb mybin

debug和release

debug
debug模式下生成的可执行程序会添加调试信息,所以生成的可执行程序会较大

  • 在使用gcc/g++进行编译的时候添加-g选项,会选择使用debug模式编译

release
release模式下生成的可执行程序会去除调试信息,可执行程序会较小

  • gcc/g++编译时默认使用的releas模式

可执行程序的格式

可执行程序的格式为 ELF
  • readelf
    直接读取可执行程序的格式

gdb调试

开始调试
gdb mybin,对可执行程序mybin使用gdb开始调试

退出调试
quit

调试指令

  • list / l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行
  • list / l 函数名:列出某个函数的源代码
  • r或run:运行程序
  • n或nuxt:单条执行
  • s或step:进入函数调用
  • break(b)行号:在某一行设置断电
  • break 函数名:在某个函数开头设置断点
  • info break:查看断点信息
  • finish:执行完当前函数返回,然后停下来等待命令
  • print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值
  • set var:修改变量的值
  • countinue(或c):从当前位置开始连续而非单步执行程序,从一个断点执行到下一个断点
  • run(r):从开始连续而非单步执行程序
  • delete breakpoints:删除所有断点
  • delete breakponts n:删除序号为n的断点
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • info(i)breakpoints:查看当前设置了哪些断点
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
  • until:在一个范围内,直接运行到指定行
  • until x行号:跳至x行
  • breaktrace(bt):查看各级函数调用及参数
  • info(i)locals:查看当前栈帧局部变量的值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637291.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot + Vue实现的学生心理咨询评估管理系统设计与实现+毕业论文+开题报告+答辩PPT

介绍 系统有管理员和用户。 管理员可以管理个人中心,用户管理,试题管理,试卷管理,考试管理等。用户参加考试。 学生心理咨询评估系统的登录流程,针对的角色就是操作员的操作角色。在登录界面需要的必填信息就是账号信…

Vue2之组件通信(爆肝)

大家有什么想看的可以在评论区留言,我尽量满足,感谢大家! 组件通信是vue中一个非常重要的内容,我们需要掌握好组件通信,那么让我为大家介绍几种组件通信的方式吧! 一、props 这是父传子的方式&#xff0…

Docker - 简介

原文地址,使用效果更佳! Docker - 简介 | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-introduce.html Docker是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 D…

vulfocus靶场thinkphp命令执行cve-2018-1002015

thinkPHP 5.0.x版本和5.1.x版本中存在远程代码执行漏洞,该漏洞源于ThinkPHP在获取控制器名时未对用户提交的参数进行严格的过滤。远程攻击者可通过输入‘\’字符的方式调用任意方法利用该漏洞执行代码 开启靶场: 使用工具: think…

适配器模式【结构型模式C++】

1.概述 适配器模式是一种结构型设计模式, 又称为变压器模式、包装模式(Wrapper) 将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 2.结构 Target:适配…

python3如何提取汉字

采用正则表达式的方法对字符串进行处理。 str1 "{我%$是,《速$.度\发》中 /国、人"(1)提取汉字 汉字的范围为”\u4e00-\u9fa5“,这个是用Unicode表示的。 import re res1 .join(re.findall([\u4e00-\u9fa…

排序 “叁” 之交换排序

目录 1. 基本思想 2.冒泡排序 2.1 基本思想 2.2 代码示例 2.3 冒泡排序的特性总结 3.快速排序 3.1 基本思想 🌵hoare版本 🌵挖坑法 ​编辑 🌵前后指针版本 ​编辑 3.2 快速排序优化 🌻三数取中法选key 3.4 快速排序…

命理八字之电子木鱼的代码实现

#uniapp# #电子木鱼# 不讲废话,上截图 目录结构如下图 功能描述: 点击一下,敲一下,伴随敲击声,可自动点击。自动点击需看视频广告,或者升级VIP会员。 疑点解答: 即animation动画的时候&…

git 基础配置

一、下载git sudo apt install git -y二、用户信息配置 $ git config --global user.name "John Doe" $ git config --global user.email johndoeexample.com检查配置信息 git config --list三、ssh密钥生成 1、进入~/.ssh mkdir ~/.ssh cd ~/.ssh2、生成密钥 …

计算机网络基础1--基础概念

1. IP地址 1.1 IPv4地址 分为网络号和主机号 地址块的第一个地址和最后一个地址通常不使用。 广播地址为主机号全取1的情况。 2. 常用报文格式 2.0 ethernet协议 2.1 arp协议 2.2 ip协议 2.3 tcp协议 2.4 udp协议 2.5 icmp协议

电磁兼容(EMC):静电放电(ESD)抗扰度试验深度解读(三)

目录 1. 静电抗扰度试验标准试验程序定制的目的 2. 环境条件对充电量的影响 3. 环境级别与空气和接触放电的关系 4. 试验等级的选择 1. 静电抗扰度试验标准试验程序定制的目的 保护设备免受静电放电影响的问题对制造厂和用户来说都是相当重要的。 随着微电子元件的广泛应用…

安装多个MySQL版本时如何连接到不同的数据库

当安装多个版本的数据库时,不同版本的端口名不一样,可以使用以下命令进行连接 mysql -uroot -p数据库密码 -h主机名 -P端口号 数据库主机名默认是localhost,端口号默认是3306,当安装多个版本数据库时,需要记住数据库的…