当前位置: 首页 > news >正文

gdb用法

创建文件

// main.cpp文件

// 稳态误差
void pid_test_wentaiwucha()
{float p = 1.5;int t = 1;              // t = 1s;int target = 5;         // 5m/sfloat output = 0;float radis = 3;        // 稳态误差std::cout << "output:   " << std::endl;for(int i = 0; i < 30; i++){std::cout << output << ", ";float error = target - output;output += p * error * t - radis;}
}//下述代码是模仿话哦的那个窗口代码用于调试
int main()
{pid_test_wentaiwucha();return 0;
}

编译文件

使用指令编译出main.out文件

g++ -g main.cpp -o main.out

使用指令开启gdb调试

gdb ./main.out

显示如下

GNU gdb (GDB) EulerOS 8.3.1-12.h1.eulerosv2r9
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-openEuler-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
--Type <RET> for more, q to quit, c to continue without paging--

直接回车进入gdb模式

添加断点指令

(gdb) b main.cpp:13			// 断在文件的某行
// 或者
(gdb) b main				// 断在某个函数名

比如断在pid_test_wentaiwucha函数,使用指令

(gdb) b pid_test_wentaiwucha	

显示如下

(gdb) b pid_test_wentaiwucha
Breakpoint 1 at 0x401255: file main.cpp, line 149.

使用指令info查看断点

(gdb) info b			// 查看所有断点
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000401255 in pid_test_wentaiwucha() at main.cpp:149
2       breakpoint     keep y   0x0000000000401269 in pid_test_wentaiwucha() at main.cpp:152

使用下述指令开始程序调试

(gdb) r

使用下述指令开始程序调试单步运行

(gdb) n							// next 单步调试

如果直接回车是默认使用上一次指令

如果使用下述指令可以快速运行到下一个断点

(gdb) c

使用下述指令可以查看某个变量变化(需研究)

(gdb) watch t				//监视t的值发生变化

对于watch指令,如果是全部变量可以直接看,如果不是全局变量可能需要程序跑到函数里才能watch

使用下述指令可以进入函数调试

(gdb) watch s

使用下述指令可以查看变量值,如果是局部变量需要等进入函数内可以查看

(gdb) p t				// 查看变量t的值。

使用下述指令可以打开调试窗口

(gdb) layout src

在这里插入图片描述

使用下述指令可以暂时开关窗口

1、ctrl+x
2、a

使用下述指令可以打开汇编窗口

layout asm

使用下述指令可以单步调试汇编窗口

si

cMwQ-1719488930729)]

使用下述指令可以暂时开关窗口

1、ctrl+x
2、a

使用下述指令可以打开汇编窗口

layout asm

使用下述指令可以单步调试汇编窗口

si

相关文章:

gdb用法

创建文件 // main.cpp文件 // 稳态误差 void pid_test_wentaiwucha() {float p 1.5;int t 1; // t 1s;int target 5; // 5m/sfloat output 0;float radis 3; // 稳态误差std::cout << "output: " << std::endl;fo…...

聊一聊UDF/UDTF/UDAF是什么,开发要点及如何使用?

背景介绍 UDF来源于Hive&#xff0c;Hive可以允许用户编写自己定义的函数UDF&#xff0c;然后在查询中进行使用。星环Inceptor中的UDF开发规范与Hive相同&#xff0c;目前有3种UDF&#xff1a; A. UDF--以单个数据行为参数&#xff0c;输出单个数据行&#xff1b; UDF&#…...

配置Nginx二级域名

一、环境 &#xff08;一&#xff09;配置 1.服务器 linux CentOS 2.反向代理 Nginx 3.开放端口 云服务器开放端口80和443 二、域名备案 &#xff08;一&#xff09;腾讯云 1.腾讯云域名备案流程 备注&#xff1a;一级域名备案后&#xff0c;二级域名可以不用再备案&a…...

LeetCode——判断回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而 …...

shell:使用结构化语句(for、while循环)

1. for命令 下面是bash shell中for命令的基本格式。 for var in list docommands done每次for命令遍历值列表&#xff0c;它都会将列表中的下个值赋给$test变量。$test变量可以像for 命令语句中的其他脚本变量一样使用。在最后一次迭代后&#xff0c;$test变量的值会在shell脚…...

数据结构_绪论

1.数据结构的研究内容 研究数据的特性和数据之间的关系 用计算机解决一个问题的步骤 1.具体问题抽象成数学模型 实质: 分析问题--->提取操作对象--->找出操作对象之间的关系(数据结构)--->用数学语言描述 操作对象对象之间的关系 2.设计算法 3.编程,调试,运行 …...

AI自动生成角色和情节连续的漫画,中山大学联想提出AutoStudio,可以多轮交互式连续生成并保持主题一致性。

中山大学和联想研究院提出AutoStudio: 是一种无需训练的多代理框架&#xff0c;用于多轮交互式图像生成&#xff0c;能够在生成多样化图像的同时保持主体一致性。 AutoStudio 采用三个基于 LLM 的智能体来解释人类意图并为 SD 模型生成适当的布局指导。此外&#xff0c;还引入…...

【经典面试题】RabbitMQ如何防止重复消费?

RabbitMQ的消息消费是有确认机制的&#xff0c;正常情况下&#xff0c;消费者在消费消息成功后&#xff0c;会发送一个确认消息&#xff0c;消息队列接收到之后&#xff0c;就会将该消息从消息队列中删除&#xff0c;下次也就不会再投递了。 但是如果存在网络延迟的问题&#…...

如何自己录制教学视频?零基础也能上手

随着在线教育的蓬勃发展&#xff0c;录制教学视频成为了教师和教育工作者们不可或缺的一项技能。无论是为了远程教学、课程分享还是知识普及&#xff0c;教学视频的录制都变得愈发重要。可是如何自己录制教学视频呢&#xff1f;本文将介绍两种录制教学视频的方法&#xff0c;这…...

【android】用 ExpandableListView 来实现 TreeView树形菜单视图

使用 ExpandableListView 来实现 TreeView 创建一个 ExpandableListAdapter 来为其提供数据。以下演示了如何使用 ExpandableListView 来展示树形结构的数据&#xff1a; 首先&#xff0c;在布局文件中添加 ExpandableListView&#xff1a; <ExpandableListViewandroid:i…...

策略模式与函数式编程应用

策略模式 | 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;&#xff1a;islenone和islentwo分别根据特定条件返回电话号码 函数式编程&#xff1a; ‘’ if pd.isna(self.note1) else len(re.findall(r’\d, self.note1)) 重复代码&#xff1a; 当…...

docker原理记录C-N-A

docker原理 容器技术的兴起源于 PaaS 技术的普及 Docker 项目通过“容器镜像”&#xff0c;解决了应用打包这个根本性难题容器本身没有价值&#xff0c;有价值的是“容器编排”Cgroups 和 Namespace Cgroups 技术是用来制造约束的主要手段&#xff0c;而Namespace 技术则是用…...

【LeetCode】每日一题:二叉树的层次遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 解题思路 水题 AC代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightN…...

单体架构改造为微服务架构之痛点解析

1.微服务职责划分之痛 1.1 痛点描述 微服务的难点在于无法对一些特定职责进行清晰划分&#xff0c;比如某个特定职责应该归属于服务A还是服务B? 1.2 为服务划分原则的痛点 1.2.1 根据存放主要数据的服务所在进行划分 比如一个能根据商品ID找出商品信息的接口&#xff0c;把…...

马面裙的故事:汉服如何通过直播电商实现产业跃迁

【潮汐商业评论/原创】 波澜壮阔的千里江山在马面裙的百褶上展开&#xff0c;织金花纹在女性的步伐之间若隐若现&#xff0c;从明清到现代&#xff0c;如今马面裙又流行了回来&#xff0c;成为女性的流行单品&#xff0c;2024年春节期间&#xff0c;马面裙更是成为华夏女孩们的…...

SaaS产品运营:维护四个不同类型的合作伙伴的实战指南

在SaaS&#xff08;软件即服务&#xff09;行业的竞争中&#xff0c;与合作伙伴建立并维护良好关系至关重要。不同类型的合作伙伴对于产品的推广、市场覆盖和用户增长都起着不同的作用。如何有效维护这四种类型合作伙伴&#xff1f;看个案例一起学习吧。 一、合作伙伴的四种类型…...

【监控】3.配置 Grafana 以使用 Prometheus 数据源

1 访问 Grafana 打开浏览器&#xff0c;访问 http://localhost:3000&#xff08;默认端口&#xff09;。使用默认的用户名和密码 admin/admin 登录。 2 添加 Prometheus 数据源 进入 Grafana 仪表板&#xff0c;点击左侧菜单中的“Configuration” -> “Data Sources”。…...

【LinuxC语言】网络编程中粘包问题

文章目录 前言什么叫做粘包问题粘包问题如何解决?总结前言 在进行网络编程时,我们经常会遇到一个非常常见但又往往被忽视的问题,那就是"粘包"问题。粘包是指在基于TCP/IP协议的数据传输过程中,由于TCP/IP协议是基于字节流的,这就可能会导致多个数据包被一起接收…...

Docker之jekins的安装

jekins官网地址&#xff1a;Jenkins Plugins &#xff08;https://plugins.jenkins.io/&#xff09; jekins 的docker 官方地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址&#xff1a; docker/README.md at master jenkinsci…...

# bash: chkconfig: command not found 解决方法

bash: chkconfig: command not found 解决方法 一、chkconfig 错误描述&#xff1a; 这个错误表明在 Bash 环境下&#xff0c;尝试执行 chkconfig 命令&#xff0c;但是系统找不到这个命令。chkconfig 命令是一个用于管理 Linux 系统中服务的启动和停止的工具&#xff0c;通常…...

OpenClaw自动化周报:Qwen3-32B镜像整合多平台数据

OpenClaw自动化周报&#xff1a;Qwen3-32B镜像整合多平台数据 1. 为什么需要自动化周报 每周五下午&#xff0c;我的日历总会准时弹出提醒&#xff1a;"撰写本周工作总结"。这个看似简单的任务&#xff0c;实际操作起来却异常繁琐&#xff1a;需要登录JIRA查看任务…...

手把手教你用PHPStudy部署彩虹云商城二开版(2025修复完整版,含自动对接与漏洞修复)

零基础实战&#xff1a;PHPStudy环境下的彩虹云商城完整部署指南&#xff08;2025安全强化版&#xff09; 在个人站长和电商创业者的圈子里&#xff0c;彩虹云商城系统一直以其轻量化和易用性备受青睐。最近接触到的这个2025修复版&#xff0c;不仅保留了原系统的核心优势&…...

ESP32-S3 OV2640摄像头从AP模式到STA模式的保姆级切换教程(附完整代码)

ESP32-S3 OV2640摄像头从AP模式到STA模式的保姆级切换教程&#xff08;附完整代码&#xff09; 当你第一次拿到ESP32-S3开发板和OV2640摄像头模块时&#xff0c;可能会被官方例程中的AP&#xff08;热点&#xff09;模式所困扰。虽然AP模式让设备快速上线&#xff0c;但在实际家…...

嵌入式开发板选型:需求、预算与扩展性平衡

嵌入式开发板选型策略&#xff1a;平衡需求、预算与扩展性1. 项目概述1.1 嵌入式开发面临的挑战现代嵌入式系统开发面临三大核心矛盾&#xff1a;有限预算与功能需求的矛盾、当前项目需求与未来技术升级的矛盾、性能要求与功耗限制的矛盾。特别是在AIoT和边缘计算领域&#xff…...

Midscene.js从入门到精通:AI驱动的跨平台自动化技术指南

Midscene.js从入门到精通&#xff1a;AI驱动的跨平台自动化技术指南 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 在数字化时代&#xff0c;软件界面的动态变化和跨平台兼容性给自动化测试…...

Windows上搭建PostgreSQL监控神器:Grafana+Prometheus+Postgres_Exporter保姆级干货教程

❓想要实时掌握 PostgreSQL 数据库的运行状态&#xff1f; &#x1f440;想知道复制延迟、锁等待这些核心指标&#xff1f; &#x1f192;这里是Moshow的「CSDN https://zhengkai.blog.csdn.net/」 &#x1f680;这篇文章带你从零开始&#xff0c;在 Windows 上搭建一套企业…...

基于STM32与ADC的锂电池电量监测系统设计

1. 锂电池电量监测为什么需要STM32和ADC&#xff1f; 做嵌入式开发的朋友应该都遇到过这样的需求&#xff1a;设备用锂电池供电&#xff0c;需要实时显示剩余电量。比如手持设备、智能家居控制器或者无人机&#xff0c;电量显示都是刚需功能。但锂电池的特性决定了直接测量电量…...

GPStar Audio串口控制库:嵌入式多轨音频系统开发指南

1. GPStar Audio Serial Library 技术深度解析GPStar Audio Serial Library 是专为 GPStar Technologies 公司推出的 GPStar Audio 与 GPStar Audio XL 系列嵌入式音频播放器设计的串行通信控制库。该库并非通用音频驱动&#xff0c;而是针对特定硬件平台深度定制的、面向实时交…...

深度剖析:synchronized 底层实现原理(JVM 视角)

一、Java对象内存布局的深度拆解原文提到了对象头&#xff0c;这里补充64位JVM的完整对象布局和对齐填充的底层原因。1.1 64位JVM的完整对象结构text┌─────────────────────────────────────────────┐ │ 对象头…...

终极对比指南:Autoenv vs 其他环境管理工具,如何选择最适合你的目录环境自动化方案

终极对比指南&#xff1a;Autoenv vs 其他环境管理工具&#xff0c;如何选择最适合你的目录环境自动化方案 【免费下载链接】autoenv Directory-based environments. 项目地址: https://gitcode.com/gh_mirrors/au/autoenv Autoenv是一款强大的目录环境自动化工具&#…...