教程:C++调试

本教程使用TextFinder示例来说明如何在调试模式下调试 Qt C++应用程序。

TextFinder读取文本文件到QString,然后使用QTextEdit显示它。要查看TextFinder类和存储的数据

  1. 在textfinder.cpp中,在行号和窗口边界之间的行上点击,设置断点。

  2. 转到调试 > 开始调试 > 开始启动项目调试或按F5
  3. 要查看关于断点的信息,请转到断点视图。

  4. 要删除断点,右键单击它并选择删除断点
  5. 要查看TextFinder类的基类和数据成员,请转到局部变量视图。

修改on_findButton_clicked()函数,以便将光标移回文档开头,并在光标到达文档末尾时继续搜索。添加以下代码片段

void TextFinder::on_findButton_clicked()
{
    QString searchString = ui->lineEdit->text();

    QTextDocument *document = ui->textEdit->document();
    QTextCursor cursor = ui->textEdit->textCursor();
    cursor = document->find(searchString, cursor,
        QTextDocument::FindWholeWords);
    ui->textEdit->setTextCursor(cursor);

    bool found = cursor.isNull();

    if (!found && previouslyFound) {
        int ret = QMessageBox::question(this, tr("End of Document"),
        tr("I have reached the end of the document. Would you like "
        "me to start searching from the beginning of the document?"),
        QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

        if (ret == QMessageBox::Yes) {
            cursor = document->find(searchString,
                QTextDocument::FindWholeWords);
            ui->textEdit->setTextCursor(cursor);
        } else
            return;
    }
    previouslyFound = found;
}

然而,如果您编译并运行上述代码,则由于逻辑错误,应用程序无法正确工作。为了定位这个逻辑错误,使用以下按钮逐步执行代码: (停止调试器), (步过), (步入), 和 (步出)。

另请参阅教程:Qt Widgets应用程序调试调试器调试器

©2024 本文档中包含的 Qt 公司有限责任公司的文档贡献均为各自所有者的版权。提供的文档在此处是根据自由软件基金会发布的、版本为 1.3 的GNU 自由文档许可证的条款进行许可。Qt 及其相关标志是芬兰及/或其他国家/地区的 Qt 公司商标。所有其他商标均为各自所有者的财产。