QT断点调试[通俗易懂]

news2024/11/25 20:39:49

QT设置断点调试:

  • 1、知道哪里可能出问题
  • 2、完全不清楚自己程序bug在哪
  • 3、跳过肯定不会出错的地方

前言: 这个东西难道大家不都应该会吗??? 本人用Qt Creator编写Qt的,~ 当然是有大佬用记事本写Qt的hhhh,每个人用IDE或者编辑器的习惯不一样,但……调试嘛,大差不差的,将就看看吧


1、知道哪里可能出问题

在觉得可能会出现问题的代码块开头第一行代码左侧添加断点,(这里和下面都以用栈把中缀式变成后缀式的自写算法为例),如图所示:

我们觉得bug很可能会出现在这个函数中(因为这个算法大部分代码都写在这个函数了,图片没必要把后续代码全部体现出来),所以我们在这个函数第一句左侧设置了breakpoint(断点),编译后用左下角的debug按钮我们就会进入debug模式,程序会执行到断点然后停住,出现一个小箭头告诉你执行到这一步了:

因为函数头只是一个声明,没什么实际的东西,因此我们看到debug后断点和箭头会直接跳转到了函数内的第一条语句,然后下面我门要知道两个按钮: F10: 单步跳过,对于单个语句来说它会执行,然后跳转到下一条语句,但对于某条语句中包含函数调用的话,也会直接跳过调用函数的具体执行步骤,从而直接返回调用函数的结果:

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

如图,if执行,条件不满足,跳转到了else if语句


下面我们看看调用函数时,top_stack 与 xyge_ele都是我自己写的函数名:

按下F10

 

直接跳过函数执行步骤,跳到下一条语句去了。


F11: 单步进入:对于基本语句来说(用F11进入的函数除外),会进入这条语句的底层代码;对于调用的函数来说,会进入调用的函数去执行其每一条语句: 先看基本语句:

我们箭头指向运行到第220行代码, 按下F11

 

可以看到,进入了QString相关的底层代码(我也看不懂


再看调用函数时:

我们还是回到第253行的函数调用语句, 按下F11

 

可以看见进入了top_ele()函数,同理,接着按F11 还会进入xyge_ele()函数,在此就不赘述了。


然后在右侧有当前活动变量,在运行到箭头所指代码时的值,我们可以看变量的值是否和预期一直从而更快更方便地找到bug所在。 右侧活动变量的实时值:

当然也可以用qDebug输出,但我觉得没必要??


2、完全不清楚自己程序bug在哪

~~在 int main()左侧加断点就好了(手动狗头) ~~


3、跳过肯定不会出错的地方

debug时,会出现肯定不会出现错误的代码块块,为了节省时间,我们可以跳过:

只要在需要跳过的代码块前后各加一个断点 如下图,我们给QString[] 数组赋空字符串””,这个代码是不会有bug的,但却要执行很多次,就要按F10很多次,浪费时间,于是我们在代码块前后加了两个断点:

然后!!!,敲黑板,划重点了,我们需要按下 F5,就能跳过这段代码的啦!

emmmm,基本的断点调试就差不多时这样了,奥,一直用F11进入的话是可以进入最底层的汇编的,想深入学习研究汇编的同学可以试试 (没必要hhh)。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中__init__.py的作用介绍

一、文件__init__.py作用:package / module 的标志 下图的serrors包含这个文件时候,Python会将其当做一个模块(module)来处理,进而可以使用from serrors import xx方式导入serrors包中的文件或模块。 如图所示&#x…

Linux的IO(初阶)

Linux的IO(初阶) 文章目录Linux的IO(初阶)1.C语言文件IO1.1 C语言文件的(复习)1.2 相对路径与绝对路径(复习)1.3 C语言中文件操作函数(复习)1.4 C语言文件写入方式(复习)1.5 三个默认打开的流1.6 FILE类型的理解2.Linux系统文件IO2.1 打开文件的系统接口函数:open2.…

2023年,学测试还有前途吗?

最近因为疫情等各种原因,大厂裁员,失业等等频频受到关注。 不解释,确实存在,各行各业都很难,但是,说软件测试行业没有前途,我还真不认同(不是为培训机构说好话,大环境不…

面向对象编程 上 (1)

目录 学习面向对象内容的三条主线 面向过程与面向对象 面向过程(POP) 与 面向对象(OOP) 面向对象的三大特征 例子:人把大象装进冰箱 面向对象的思想概述 类和对象 面向对象的思想概述 Java类及类的成员 类的语法格式 创建Java自定义类 对象的创建和使用 类…

2022最新的护眼灯怎么选?护眼台灯到底有用吗

众所周知,人眼能看到各种事物,都是由于光线照射到物体身上,然后反射进入人眼成像,但是如果光线不合理或者不合适,那么进入人眼的光线就会对造成巨大的伤害。所以护眼灯到底有没有用,就在于其发出的光线能不…

【python与数据分析】实验十三 北京市空气质量

目录 一、实验内容 二、完成情况 三、数据分析 1.问题描述 2.编程思路 3.程序代码 4.程序运行结果 (1)2014年-2019年AQI时间序列折线图 (2)各年AQI折线图、AQI直方图、PM2.5与AQI散点图、空气质量整体情况的饼图 ​&am…

关于虚数与复数

关于虚数与复数1 数的分类1.1 实数域1.2 虚数与复数2 复数的性质及其运算2.1 复平面、大小及辐角2.2 复数四则运算2.3 共轭复数2.4 复数的极坐标表示3 欧拉公式3.1 欧拉公式证明3.2 利用欧拉公式表示极坐标3.3 欧拉公式推导三角函数加法定理4 复数的性质、乘法和除法运算和极坐…

catia基本操作

1.2CATIA的基本操作_哔哩哔哩_bilibili ctrl鼠标中键 视图放大缩小 alt鼠标中键 视图平移 Alt Enter 性质 4、中键可以平移图形 中键和左键(或右键)可以实现旋转 按下中键,再按右键,放开右键,拖动鼠标&#xff…

【阿里云】阿里云跨账号内网互通

阿里云VPC对等连接提供连通两个VPC的网络连接,您可以使用私有IP地址直接通信,两个VPC就像在同一个网络中一样。您可以与自己同地域或者跨地域其他VPC之间创建对等连接,也可以与其他账号的同地域或者跨地域VPC之间建立对等连接,同地…

PHP基于thinkphp的旅游见闻管理系统#毕业设计

随着旅游行业的不断发展,各家旅游行业之间的竞争日益激烈,旅游部门所需的信息量越来越大,业务操作中涉及的各种线路情况、用户情况以及旅游协作部门的情况越来越复杂多变。而除了一些个别地区已采用了的旅游网站,一般通常是以原始的手工方式处理/新闻资讯。但是工作人员若仅靠手…

JavaEE Spring MVC 常用注解

RequestMapping ⽤来注册接⼝的路由映射。当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类的某个⽅法的过程就叫路由映射。 Controller //类注解不能忘 RequestMapping("/webcontroller") public class WebController {RequestMapping("/say…

CSDNtop1全栈接口测试教程 jmeter接口测试,接口自动化测试【2】

延时等待(全局性) api 测试⽤例执⾏速度⾮常快,某些时候因为业务的特性想让它延迟⼏秒执⾏,那么这个时候就使⽤延时等待。 参数化 可以理解为:⼀个测试点需要多次操作,并且每次操作数据都是不⼀样但测试步…

机器学习4超参数问题

文章目录一、超参数问题11、超参数:2、如何寻找好的超参数?二、超参数问题2综上所述三、超参数问题3搜索明可夫斯基距离相应的p;更多关于距离的定义:欧拉距离曼哈顿距离进一步推广可以发现其中有一定一致性明可夫斯基距离:&#x…

全网最全(万字整理)_SpringBoot整合ThymeLeaf

文章目录SpringBoot整合Thymeleaf0x01_入门案例0x02_Thymeleaf视图解析简介0x03_Thymeleaf的表达式0x04_Thymeleaf的标签th:textth:eachth:objectth:hrefth:actionth:onclickth:ifth:value0x05_内置对象#dates#Strings#Numbers域对象0x0x_补充一些概念国际化Thymeleaf缓存区重定…

01-09-hive-入门基本概念-hive-mysql安装

01-hive-入门基本概念: 什么是hive hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表&#xf…

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)

算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2271-2275)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2271 完全立方数32. MT2272 质数率3. MT2273 元素共…

如何修复 Windows 11/10上的 0x8007023e Windows 更新错误

修复 0x8007023e 错误 运行 Windows Update 疑难解答重置 Windows Update 组件使用 DISM 工具修复 Windows Update 客户端从 Microsoft update Catalog 网站下载并安装更新运行 Microsoft 支持和恢复助手系统更新根据 Windows 质量更新服务节奏发布到 Windows 设备。如果当您尝…

zookeeper学习(一)zk特性与节点数据类型详解(2022)

Zookeeper是一个开源的分布式协调框架,主要用来解决分布式集群中应用系统的一致性问题。从设计模式角度来理解其实zk是一个基于观察者模式设计的分布式服务管理框架。 CAP理论: cap理论指出对于一个分布式计算系统来说,不可能同时满足以下三…

COMSOL泰森多边形Voronoi图多孔骨架优化模型受力分析

Voronoi模型 在comsol内建立泰森多边形骨架支撑网格,模型采用一般的多边形泰森多边形孔隙以及样条曲边泰森多边形孔隙做对比研究,分析模型在承受压力荷载下的应力分布。通过comsol的固体力学计算可看出拟圆形Voronoi孔隙支撑结构的应力分布更为合理&…

【LIMU-Bert论文阅读】

LIMU-BERT: Unleashing the Potential of Unlabeled Data for IMU Sensing Applications 题目重点: 充分利用无标签数据适用于IMU传感器应用(并没有指出specfic task) 文章核心: 如何根据IMU数据的特征设计出LIMU-Bert&#xff0c…