Qt调试模式的使用

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小白,所以如有错误请多多包涵,谢谢大家了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值