QT断点调试[通俗易懂]
创始人
2024-03-09 06:58:56
0

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模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...