forked from qt-creator/qt-creator
Doc: pulling out the debugging example to a separate file
Change-Id: I79e8272f9f42d749e6e4a34bb0400a2582ecf4b8 Reviewed-on: http://codereview.qt-project.org/5878 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@nokia.com>
This commit is contained in:
108
doc/src/debugger/creator-debugger-example.qdoc
Normal file
108
doc/src/debugger/creator-debugger-example.qdoc
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** This file is part of Qt Creator
|
||||||
|
**
|
||||||
|
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||||
|
**
|
||||||
|
** Contact: Nokia Corporation (info@qt.nokia.com)
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** GNU Free Documentation License
|
||||||
|
**
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU Free
|
||||||
|
** Documentation License version 1.3 as published by the Free Software
|
||||||
|
** Foundation and appearing in the file included in the packaging of this
|
||||||
|
** file.
|
||||||
|
**
|
||||||
|
** If you have questions regarding the use of this file, please contact
|
||||||
|
** Nokia at info@qt.nokia.com.
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
// **********************************************************************
|
||||||
|
// NOTE: the sections are not ordered by their logical order to avoid
|
||||||
|
// reshuffling the file each time the index order changes (i.e., often).
|
||||||
|
// Run the fixnavi.pl script to adjust the links to the index order.
|
||||||
|
// **********************************************************************
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\contentspage index.html
|
||||||
|
\previouspage creator-debugging.html
|
||||||
|
\page creator-debugging-example.html
|
||||||
|
\nextpage creator-debugger-operating-modes.html
|
||||||
|
|
||||||
|
\title Debugging the Example Application
|
||||||
|
|
||||||
|
This section uses the \l{Creating a Qt Widget Based Application}{TextFinder}
|
||||||
|
example to illustrate how to debug Qt C++ applications in the \gui Debug
|
||||||
|
mode.
|
||||||
|
|
||||||
|
TextFinder reads a text file into QString and then displays it with
|
||||||
|
QTextEdit. To look at the TextFinder class and see the stored data, place
|
||||||
|
a breakpoint in textfinder.cpp, as follows:
|
||||||
|
|
||||||
|
\list 1
|
||||||
|
|
||||||
|
\o Click in between the line number and the window border on the line
|
||||||
|
where we change the cursor position to set a breakpoint.
|
||||||
|
|
||||||
|
\image qtcreator-setting-breakpoint1.png
|
||||||
|
|
||||||
|
\o Select \gui{Debug > Start Debugging > Start Debugging} or press
|
||||||
|
\key{F5}.
|
||||||
|
|
||||||
|
\o To view the breakpoint, click the \gui{Breakpoints} tab.
|
||||||
|
|
||||||
|
\image qtcreator-setting-breakpoint2.png
|
||||||
|
|
||||||
|
\o To remove a breakpoint, right-click it and select
|
||||||
|
\gui{Delete Breakpoint}.
|
||||||
|
|
||||||
|
|
||||||
|
\o To view the base classes and data members of the TextFinder class,
|
||||||
|
go to the \gui{Locals and Expressions} view.
|
||||||
|
|
||||||
|
\image qtcreator-watcher.png
|
||||||
|
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
Modify the \c{on_findButton_clicked()} function to move back to
|
||||||
|
the start of the document and continue searching once the cursor hits the
|
||||||
|
end of the document. Add the following code snippet:
|
||||||
|
|
||||||
|
\code
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
If you compile and run the above code, however, the application does not
|
||||||
|
work correctly due to a logic error. To locate this logic error, step
|
||||||
|
through the code using the following buttons:
|
||||||
|
|
||||||
|
\image qtcreator-debugging-buttons.png
|
||||||
|
*/
|
||||||
@@ -41,9 +41,11 @@
|
|||||||
|
|
||||||
\list
|
\list
|
||||||
|
|
||||||
|
\if defined(qcmanual)
|
||||||
\o \l{Debugging the Example Application} uses an example application
|
\o \l{Debugging the Example Application} uses an example application
|
||||||
to illustrate how to debug Qt C++ applications in the \gui Debug
|
to illustrate how to debug Qt C++ applications in the \gui Debug
|
||||||
mode.
|
mode.
|
||||||
|
\endif
|
||||||
|
|
||||||
\o \l{Launching the Debugger} describes the
|
\o \l{Launching the Debugger} describes the
|
||||||
operating modes in which the debugger plugin runs, depending on
|
operating modes in which the debugger plugin runs, depending on
|
||||||
@@ -972,90 +974,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\contentspage index.html
|
|
||||||
\previouspage creator-debugging.html
|
|
||||||
\page creator-debugging-example.html
|
|
||||||
\nextpage creator-debugger-operating-modes.html
|
|
||||||
|
|
||||||
\title Debugging the Example Application
|
|
||||||
|
|
||||||
This section uses the \l{Creating a Qt Widget Based Application}{TextFinder}
|
|
||||||
example to illustrate how to debug Qt C++ applications in the \gui Debug
|
|
||||||
mode.
|
|
||||||
|
|
||||||
TextFinder reads a text file into QString and then displays it with
|
|
||||||
QTextEdit. To look at the TextFinder class and see the stored data, place
|
|
||||||
a breakpoint in textfinder.cpp, as follows:
|
|
||||||
|
|
||||||
\list 1
|
|
||||||
|
|
||||||
\o Click in between the line number and the window border on the line
|
|
||||||
where we change the cursor position to set a breakpoint.
|
|
||||||
|
|
||||||
\image qtcreator-setting-breakpoint1.png
|
|
||||||
|
|
||||||
\o Select \gui{Debug > Start Debugging > Start Debugging} or press
|
|
||||||
\key{F5}.
|
|
||||||
|
|
||||||
\o To view the breakpoint, click the \gui{Breakpoints} tab.
|
|
||||||
|
|
||||||
\image qtcreator-setting-breakpoint2.png
|
|
||||||
|
|
||||||
\o To remove a breakpoint, right-click it and select
|
|
||||||
\gui{Delete Breakpoint}.
|
|
||||||
|
|
||||||
|
|
||||||
\o To view the base classes and data members of the TextFinder class,
|
|
||||||
go to the \gui{Locals and Expressions} view.
|
|
||||||
|
|
||||||
\image qtcreator-watcher.png
|
|
||||||
|
|
||||||
\endlist
|
|
||||||
|
|
||||||
Modify the \c{on_findButton_clicked()} function to move back to
|
|
||||||
the start of the document and continue searching once the cursor hits the
|
|
||||||
end of the document. Add the following code snippet:
|
|
||||||
|
|
||||||
\code
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
\endcode
|
|
||||||
|
|
||||||
If you compile and run the above code, however, the application does not
|
|
||||||
work correctly due to a logic error. To locate this logic error, step
|
|
||||||
through the code using the following buttons:
|
|
||||||
|
|
||||||
\image qtcreator-debugging-buttons.png
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\contentspage index.html
|
\contentspage index.html
|
||||||
\previouspage creator-debugger-engines.html
|
\previouspage creator-debugger-engines.html
|
||||||
|
|||||||
Reference in New Issue
Block a user