Qt中程序调试的步骤

您所在的位置:网站首页 什么是单步运行模式 Qt中程序调试的步骤

Qt中程序调试的步骤

2024-07-12 00:48| 来源: 网络整理| 查看: 265

Qt中程序调试的步骤 1、设置断点

假使主函数如下:

#include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget widget; int x = widget.x(); int y = widget.y(); QRect geometry = widget.geometry(); QRect frame = widget.frameGeometry(); return a.exec(); }

所谓断点,就是程序运行到该行代码时会暂停下来,从而可以查看一些信息,如变量值等。要取消断点,只要在那个断点上再点击一下就可以了。设置好断点后便可以按下F5或者左下角的调试按钮开始调试。这时程序会先进行构建再进入调试模式,这个过程可能需要一些时间。在程序构建时可能会出现警告,那是因为我们定义了变量却没有使用造成的,不用管它。 例如:下面在int x = widget.x(); 一行代码的标号前面点击鼠标左键来设置断点。

2、调试模式

在这里插入图片描述 下面对调试模式的几个按钮和窗口进行简单介绍:

①继续按钮。程序在断点处停了下来,按下继续按钮后,程序便会像正常运行一样,执行后面的代码,直到遇到下一个断点,或者程序结束。

②停止调试按钮。按下该按钮后结束调试。

③单步跳过按钮。直接执行本行代码,然后指向下一行代码。

④单步进入按钮。进入调用的函数内部。

⑤单步跳出按钮。当进入函数内部时,跳出该函数,一般与单步进入配合使用。

⑥重新启动调试会话。

⑦显示源码对应的汇编指令,并可以单步调试。

⑧堆栈视图。这里显示了从程序开始到断点处,所有嵌套调用的函数所在的源文件名和行号。 ⑨其它视图。这里可以选择多种视图。

3、单步调试

点击一下“单步进入”按钮,或者按下F11,这时,程序会跳转到QWidget类的x()函数的源码处,这里对这个函数不做过多讲解,下面直接按下“单步跳出”按钮回到原来的断点处。然后便开始一直按“单步跳过”按钮,单步执行程序,并查看局部变量和监视器视图中相应变量值的变化情况。等执行到最后一行代码return a.exec();时,按下“停止调试”按钮,结束调试。 按下“单步进入”后: 在这里插入图片描述 在这里插入图片描述 从变量监视器中可以看到x、y、geometry和frame四个变量初始值都是一个随机未知数。等到调试完成后,x、y的值均为0,这是它们的默认值。而geometry的值为640x480+0+0,frame的值为639x479+0+0 现在对这些值还不是很清楚,不过,为什么x、y的值会是0呢?我们可能会想到,应该是窗口没有显示的原因,那么就更改代码,让窗口先显示出来,再看这些值。在QWidget widget;一行代码后添加一行代码:

widget.show();

现在再次调试程序,这时会发现窗口只显示了一个标题栏,先不管它,继续在Qt Creator中点击“单步跳过”按钮。当我们将程序运行到最后一行代码return a.exec();时,再次按下“单步跳过”按钮后,程序窗口终于显示出来了。这是因为只有程序进入主事件循环后才能接收事件,而show()函数会触发显示事件,所以只有在完成a.exe()函数调用进入消息循环后才能正常显示。这次看到几个变量的值都有了变化,但是这时还是不清楚这些值的含义。 在这里插入图片描述

注意:因为使用调试器进行调试要等待一段时间,而且步骤很麻烦,对于初学者来说,如果按错了按钮,还很容易出错。 所以,并不推荐初学者使用。

4、使用qDebug()函数

一般在程序调试过程中很常用的是qDebug()函数,它可以将调试信息直接输出到控制台,在Qt Creator中是输出到应用程序输出栏 。例如:

QApplication a(argc,argv); QWidget widget; widget.resize(400,300); widget.move(200,100); widget.show(); int x = widget.x(); qDebug("x: %d",x); //输出x的值 int y = widget.y(); qDebug("y: %d",y); //输出y的值 QRect geometry = widget.geometry(); QRect frame = widget.frameGeometry(); qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3