1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/***************************************************************************
begin : Sun Aug 8 1999
copyright : (C) 1999 by John Birch
email : jbb@kdevelop.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef _DBGCONTROLLER_H_
#define _DBGCONTROLLER_H_
#include "mi/gdbmi.h"
#include <qobject.h>
#include <domutil.h>
class KProcess;
class QString;
class QStrList;
namespace GDBDebugger
{
class Breakpoint;
class DbgCommand;
class TrimmableItem;
class VarItem;
/***************************************************************************/
/**
* @author jbb
*/
/***************************************************************************/
// sigh - namespace's don't work on some of the older compilers
enum DBGStateFlags
{
s_dbgNotStarted = 1,
s_appNotStarted = 2,
s_waitForWrite = 8,
s_programExited = 16,
s_viewBT = 128,
s_viewBP = 256,
s_attached = 512,
s_core = 1024,
s_waitTimer = 2048,
// Set when 'slotStopDebugger' started executing, to avoid
// entering that function several times.
s_shuttingDown = 4096,
s_explicitBreakInto = (s_shuttingDown << 1),
s_dbgBusy = (s_explicitBreakInto << 1),
s_appRunning = (s_dbgBusy << 1),
s_lastDbgState = (s_appRunning << 1)
};
/***************************************************************************/
/***************************************************************************/
/***************************************************************************/
class DbgController : public QObject
{
Q_OBJECT
public:
DbgController();
virtual ~DbgController();
virtual bool stateIsOn( int state ) = 0;
public slots:
virtual void configure() = 0;
virtual void slotCoreFile(const QString &coreFile) = 0;
virtual void slotAttachTo(int pid) = 0;
virtual void slotStopDebugger() = 0;
virtual void slotRun() = 0;
// Kills the application but does not stop the debugger itself.
virtual void slotKill() = 0;
virtual void slotRunUntil(const QString &fileName, int lineNum) = 0;
virtual void slotJumpTo(const QString &fileName, int lineNum) = 0;
virtual void slotStepInto() = 0;
virtual void slotStepOver() = 0;
virtual void slotStepIntoIns() = 0;
virtual void slotStepOverIns() = 0;
virtual void slotStepOutOff() = 0;
virtual void slotBreakInto() = 0;
// jw - for optional additional commands and initialization
virtual void slotVarItemConstructed(VarItem */*item*/) {}
protected slots:
virtual void slotDbgStdout(KProcess *proc, char *buf, int buflen) = 0;
virtual void slotDbgStderr(KProcess*, char*, int) {} ;
virtual void slotDbgWroteStdin(KProcess *proc) = 0;
virtual void slotDbgProcessExited(KProcess *proc) = 0;
signals:
void gotoSourcePosition (const QString &fileName, int lineNum);
void rawGDBMemoryDump (char *buf);
void rawGDBRegisters (char *buf);
void rawGDBLibraries (char *buf);
void ttyStdout (const char *output);
void ttyStderr (const char *output);
void gdbInternalCommandStdout (const char *output);
void gdbUserCommandStdout (const char *output);
void gdbStderr (const char *output);
void showStepInSource (const QString &fileName, int lineNum, const QString &address);
void dbgStatus (const QString &status, int statusFlag);
protected:
KProcess *dbgProcess_;
};
}
#endif
|