Meego Wiki
Views

SDK/Docs/1.1/Debugging with Qt Creator

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Run the application on the device)
(Create a project with Qt Creator)
Line 18: Line 18:
* [[SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux|SDK on Linux]]
* [[SDK/Docs/1.1/Getting_started_with_the_MeeGo_SDK_for_Linux|SDK on Linux]]
-
 
-
== Create a project with Qt Creator ==
 
-
 
-
Start Qt Creator (<code>meego-sdk-qt-creator</code>) and setup a project:
 
-
 
-
# Create a new project (''File > New File or Project''). Under ''Projects'', select ''Qt C++ Project'' then ''Mobile Qt Application''. Click ''Choose...''.
 
-
# In the ''Location'' section, enter '''helloworld''' for the name; choose a directory to save it to. Click on ''Next &gt;''.
 
-
# In the ''Qt Versions'' section, make sure the '''MeeGo 4.7.0''' version of Qt is selected and click ''Next &gt;''.
 
-
# In the ''Details'' section, accept the defaults and click ''Next &gt;''.
 
-
# In the ''Project Management'' section, click ''Finish''.
 
-
 
-
Next write some code:
 
-
 
-
# Open the ''Forms'' folder and double-click <code>mainwindow.ui</code> to open it in the graphical forms editor.
 
-
# Drag a label from the list of widgets on the left-hand side of the forms editor (under ''Display Widgets'') and drop it into the editable area.
 
-
# Change the text to something else ("Hello world" works well).
 
== Configure the project for debugging ==
== Configure the project for debugging ==

Revision as of 09:50, 29 October 2010


This is a brief introduction to debugging Qt applications running on a remote MeeGo device, using Qt Creator. The instructions will work with any kind of remote MeeGo device, real or emulated.

Verified by Elliot Smith on 2010-10-27, with Fedora Core 13 as host and real netbook running trunk as target. Not verified for Windows or other targets yet.

Prerequisites

You will need gdb to be installed on the host before you can do any debugging with Qt Creator. On Linux, use the package manager to install it; for example, on Fedora:

sudo yum install gdb

On MeeGo (useful if you're using Qt Creator from a chroot):

zypper install gdb

You also need to setup a MeeGo SDK environment:

Configure the project for debugging

First, ensure that debugging is enabled for the version of Qt in use:

  1. Click on the Projects button in the left-hand panel.
  2. Under General, click on the Manage button next to Qt Version.
  3. Select the Qt version you are using: use the MeeGo Qt version for your particular target (in this case, MeeGo 4.7.0).
  4. Click on the Rebuild button next to Debugging helpers (near the bottom of the dialog box). This builds the debugging helper for this version of Qt.

Next, you need something to debug. For example, add a Push Button to the form:

Sdk-docs-QtCreator-form-with-push-button.png

Then add a click handler for it, so that when the button is clicked, a message string is assigned into a variable then output to the console. The code looks like this:

/* file: Headers/mainwindow.h */
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

// our new handler
private slots:
    void on_pushButton_clicked();
};

#endif // MAINWINDOW_H
/* file: Sources/mainwindow.cpp */
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QString>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QString message;
    message = "I have been well and truly clicked";
    qDebug() << message;
}

Most of this is boilerplate generated when I started the project, but the MainWindow::on_pushButton_clicked method is mine. Notice how it also needs to be defined as a private slot in the header file.

Add a breakpoint next to the line where you want the debugger to break by clicking in the editor margin. It looks like this:

Sdk-docs-QtCreator-set-breakpoint.png

(See the red circle on line 22 after message is initialized.)

To put Qt Creator into debug mode, click on Debug/the bug icon in the left-hand toolbar. This adds some extra panels to the window which are used to show the stack, watch expressions etc.

Next, you need to change the configuration, so that Qt with debugging enabled is used to run the project.

  1. In the left-hand panel, click on Projects.
  2. Under Build Settings, select Debug from the drop-down box next to Edit build configuration.
  3. From the Build menu, select Rebuild all. This recompiles the project using the debug-enabled Qt.

Debug the application on the device

To run the application in debug mode, click on the green arrow with a bug overlaid on it (bottom left). This deploys the application to the remote device and starts it, as above; however, it also enables you to debug the remote application inside Qt Creator.

Now, click on the Click me! button in the application running on the device. The program should pause at the breakpoint. Switch back to Qt Creator and look at the debug panels:

Sdk-docs-QtCreator-paused-at-breakpoint.png

The application should pause at the breakpoint; and in Qt Creator, the message variable should then be visible in the Locals and Watchers tab, set to "I have been well and truly clicked".

For more information about using Qt Creator in debug mode, see http://doc.qt.nokia.com/qtcreator-snapshot/creator-debugging.html.

Personal tools