1.调试模式
调试模式是一个Qt自带的,可供开发者们方便的进行各种调试的一种功能,若想使用它,则要先在我们程序的主体部分设置断点,在代码的行号前点击右键即可,若要移除也是同样的点击右键即可。图中是一个简单的用Qt写的建议计算器的代码,箭头处标明了调试模式的入口。
点击进入后则会看到下图的界面
图中红色箭头处是Qt调试模式的类似于控制台的按钮,例如继续按钮、停止调试按钮、单步跳过按钮、单步进入按钮、单步跳出按钮等。同时,在该模式下还会显示堆栈视图等一系列显示数据实时状况的窗口,开发者可以根据自己的需要来进行调用。
2.单步调试
单击“单步进入”按钮,或者按下F11,然后单击“单步跳过”一步步进行调试,单步执行程序并查看局部变量和表达式视图中相应变量值的变化情况。执行到最后,单击“停止调试”按钮结束调试。至于按钮的位置,则可以在上图中的所指明的红色箭头处寻找,此处不再赘述。
此处便是通常进行debug的流程了。
3.实例
首先我们设置断点并进入调试模式,如图所示,我们在两个地方设置了断点。
随后,我们单步调试,Qt反馈了我们如上问题。
然后,我们度娘一下就知道了,这一问题有可能是定义了一个空指针造成的。
然后我们在对程序本身进行排查,发现果然定义了一个空指针。
于是进行改动,程序可正常运行了。
箭头处就是错误的代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "model.h"
#include<QString>
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_clearButton_clicked();
void on_button0_clicked();
void on_equalButton_clicked();
void on_button1_clicked();
void on_button2_clicked();
void on_button3_clicked();
void on_subButton_clicked();
void on_button4_clicked();
void on_button5_clicked();
void on_button6_clicked();
void on_button7_clicked();
void on_button8_clicked();
void on_button9_clicked();
void on_addButton_clicked();
void on_mulButton_clicked();
void on_divButton_clicked();
private:
Ui::MainWindow *ui;
QString str;
Model *model;
};
#endif // MAINWINDOW_H
#include "model.h"
#include<QString>;
Model::Model()
{
}
void Model::setNum1(int num){
num1=num;
}
void Model::setNum2(int num){
num2=num;
}
void Model::setFlag(QString f){
flag=f;
}
int Model::calculate(){
int result=0;
if(flag=="/")
result = num1/num2;
else if(flag=="+")
result = num1+num2;
else if(flag=="-")
result = num1-num2;
else if(flag=="*")
result = num1*num2;
return result;
}
#ifndef MODEL_H
#define MODEL_H
#include<QString>
class Model
{
public:
Model();
void setNum1(int num);
void setNum2(int num);
void setFlag(QString f);
int calculate();
private:
int num1;
int num2;
QString flag;
};
#endif // MODEL_H
附上主要代码。
由于博主是一个IT小白,所以如有错误请多多包涵,谢谢大家了。