cdbdebugengine.h 3.54 KB
Newer Older
1
/**************************************************************************
2
3
4
**
** This file is part of Qt Creator
**
5
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
6
7
8
**
** Contact:  Qt Software Information (qt-info@nokia.com)
**
9
** Commercial Usage
10
**
11
12
13
14
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
15
**
16
** GNU Lesser General Public License Usage
17
**
18
19
20
21
22
23
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24
**
25
26
** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com.
27
**
28
**************************************************************************/
29

hjk's avatar
hjk committed
30
31
#ifndef DEBUGGER_CDBENGINE_H
#define DEBUGGER_CDBENGINE_H
Banana Joe's avatar
Banana Joe committed
32
33

#include "idebuggerengine.h"
hjk's avatar
hjk committed
34

Banana Joe's avatar
Banana Joe committed
35
36
37
38
namespace Debugger {
namespace Internal {

class DebuggerManager;
39
40
41
class CdbDebugEventCallback;
class CdbDebugOutput;
struct CdbDebugEnginePrivate;
Banana Joe's avatar
Banana Joe committed
42

hjk's avatar
hjk committed
43
class CdbDebugEngine : public IDebuggerEngine
Banana Joe's avatar
Banana Joe committed
44
{
Friedemann Kleint's avatar
Friedemann Kleint committed
45
    Q_DISABLE_COPY(CdbDebugEngine)
Banana Joe's avatar
Banana Joe committed
46
    Q_OBJECT
47
    explicit CdbDebugEngine(DebuggerManager *parent);
Friedemann Kleint's avatar
Friedemann Kleint committed
48

Banana Joe's avatar
Banana Joe committed
49
public:
hjk's avatar
hjk committed
50
    ~CdbDebugEngine();
Banana Joe's avatar
Banana Joe committed
51

Friedemann Kleint's avatar
Friedemann Kleint committed
52
53
54
    // Factory function that returns 0 if the debug engine library cannot be found.
    static IDebuggerEngine *create(DebuggerManager *parent);

Banana Joe's avatar
Banana Joe committed
55
56
57
58
59
60
61
62
63
64
65
66
    virtual void shutdown();
    virtual void setToolTipExpression(const QPoint &pos, const QString &exp);
    virtual bool startDebugger();
    virtual void exitDebugger();
    virtual void updateWatchModel();

    virtual void stepExec();
    virtual void stepOutExec();
    virtual void nextExec();
    virtual void stepIExec();
    virtual void nextIExec();
    
67
    virtual void continueInferior();    
Banana Joe's avatar
Banana Joe committed
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
    virtual void interruptInferior();

    virtual void runToLineExec(const QString &fileName, int lineNumber);
    virtual void runToFunctionExec(const QString &functionName);
    virtual void jumpToLineExec(const QString &fileName, int lineNumber);
    virtual void assignValueInDebugger(const QString &expr, const QString &value);
    virtual void executeDebuggerCommand(const QString &command);

    virtual void activateFrame(int index);
    virtual void selectThread(int index);

    virtual void attemptBreakpointSynchronization();

    virtual void loadSessionData();
    virtual void saveSessionData();

    virtual void reloadDisassembler();

    virtual void reloadModules();
    virtual void loadSymbols(const QString &moduleName);
    virtual void loadAllSymbols();

    virtual void reloadRegisters();

92
93
94
95
96
    virtual void setDebugDumpers(bool on);
    virtual void setUseCustomDumpers(bool on);

    virtual void reloadSourceFiles();

Banana Joe's avatar
Banana Joe committed
97
98
99
100
protected:
    void timerEvent(QTimerEvent*);

private:
Friedemann Kleint's avatar
Friedemann Kleint committed
101
102
    bool startAttachDebugger(unsigned long pid, QString *errorMessage);
    bool startDebuggerWithExecutable(QString *errorMessage);
Banana Joe's avatar
Banana Joe committed
103
104
105
    void startWatchTimer();
    void killWatchTimer();

106
    CdbDebugEnginePrivate *m_d;
Banana Joe's avatar
Banana Joe committed
107

108
    friend struct CdbDebugEnginePrivate;
hjk's avatar
hjk committed
109
110
    friend class CdbDebugEventCallback;
    friend class CdbDebugOutput;
Banana Joe's avatar
Banana Joe committed
111
112
113
114
115
};

} // namespace Internal
} // namespace Debugger

hjk's avatar
hjk committed
116
#endif // DEBUGGER_CDBENGINE_H