| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Contact:  Qt Software Information (qt-info@nokia.com) | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** Commercial Usage | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** 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. | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** GNU Lesser General Public License Usage | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** 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.
 | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | ** If you are unsure which license is appropriate for your use, please | 
					
						
							|  |  |  | ** contact the sales department at qt-sales@nokia.com. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | **************************************************************************/ | 
					
						
							| 
									
										
										
										
											2008-12-02 15:08:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #ifndef DEBUGGER_DEBUGGERMANAGER_H
 | 
					
						
							|  |  |  | #define DEBUGGER_DEBUGGERMANAGER_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtCore/QByteArray>
 | 
					
						
							|  |  |  | #include <QtCore/QObject>
 | 
					
						
							|  |  |  | #include <QtCore/QPoint>
 | 
					
						
							|  |  |  | #include <QtCore/QStringList>
 | 
					
						
							|  |  |  | #include <QtCore/QVariant>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QT_BEGIN_NAMESPACE | 
					
						
							|  |  |  | class QAction; | 
					
						
							|  |  |  | class QAbstractItemModel; | 
					
						
							|  |  |  | class QDockWidget; | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  | class QLabel; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class QMainWindow; | 
					
						
							|  |  |  | class QModelIndex; | 
					
						
							|  |  |  | class QSplitter; | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  | class QTimer; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class QWidget; | 
					
						
							|  |  |  | QT_END_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Debugger { | 
					
						
							|  |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DebuggerOutputWindow; | 
					
						
							|  |  |  | class DebuggerPlugin; | 
					
						
							|  |  |  | class DebugMode; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BreakHandler; | 
					
						
							|  |  |  | class DisassemblerHandler; | 
					
						
							|  |  |  | class ModulesHandler; | 
					
						
							|  |  |  | class RegisterHandler; | 
					
						
							|  |  |  | class StackHandler; | 
					
						
							|  |  |  | class ThreadsHandler; | 
					
						
							|  |  |  | class WatchHandler; | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  | class SourceFilesWindow; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class WatchData; | 
					
						
							|  |  |  | class BreakpointData; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Note: the Debugger process itself is referred to as 'Debugger',
 | 
					
						
							|  |  |  | // whereas the debugged process is referred to as 'Inferior' or 'Debuggee'.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //     DebuggerProcessNotReady
 | 
					
						
							|  |  |  | //          |
 | 
					
						
							|  |  |  | //     DebuggerProcessStartingUp
 | 
					
						
							|  |  |  | //          | <-------------------------------------.
 | 
					
						
							|  |  |  | //     DebuggerInferiorRunningRequested             |
 | 
					
						
							| 
									
										
										
										
											2009-02-17 15:12:46 +01:00
										 |  |  | //          |                                       | 
 | 
					
						
							|  |  |  | //     DebuggerInferiorRunning                      | 
 | 
					
						
							|  |  |  | //          |                                       |  
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | //     DebuggerInferiorStopRequested                |
 | 
					
						
							|  |  |  | //          |                                       |
 | 
					
						
							|  |  |  | //     DebuggerInferiorStopped                      |
 | 
					
						
							|  |  |  | //          |                                       |
 | 
					
						
							|  |  |  | //          `---------------------------------------'
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // Allowed actions:
 | 
					
						
							|  |  |  | //    [R] :  Run
 | 
					
						
							|  |  |  | //    [C] :  Continue
 | 
					
						
							|  |  |  | //    [N] :  Step, Next
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum DebuggerStatus | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     DebuggerProcessNotReady,          // Debugger not started
 | 
					
						
							|  |  |  |     DebuggerProcessStartingUp,        // Debugger starting up
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     DebuggerInferiorRunningRequested, // Debuggee requested to run
 | 
					
						
							|  |  |  |     DebuggerInferiorRunning,          // Debuggee running
 | 
					
						
							|  |  |  |     DebuggerInferiorStopRequested,    // Debuggee running, stop requested
 | 
					
						
							|  |  |  |     DebuggerInferiorStopped,          // Debuggee stopped
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-02 15:14:12 +01:00
										 |  |  | enum DebuggerStartMode | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     StartInternal,                    // Start current start project's binary
 | 
					
						
							|  |  |  |     StartExternal,                    // Start binary found in file system
 | 
					
						
							|  |  |  |     AttachExternal,                   // Attach to running process
 | 
					
						
							|  |  |  |     AttachCore                        // Attach to a core file
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class IDebuggerEngine; | 
					
						
							|  |  |  | class GdbEngine; | 
					
						
							|  |  |  | class ScriptEngine; | 
					
						
							| 
									
										
										
										
											2009-02-20 14:56:36 +01:00
										 |  |  | class CdbDebugEngine; | 
					
						
							| 
									
										
										
										
											2009-02-20 17:07:00 +01:00
										 |  |  | struct CdbDebugEnginePrivate; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | // The construct below is not nice but enforces a bit of order. The
 | 
					
						
							|  |  |  | // DebuggerManager interfaces a lots of thing: The DebuggerPlugin,
 | 
					
						
							|  |  |  | // the DebuggerEngines, the RunMode, the handlers and views.
 | 
					
						
							|  |  |  | // Instead of making the whole interface public, we split in into
 | 
					
						
							|  |  |  | // smaller parts and grant friend access only to the classes that
 | 
					
						
							|  |  |  | // need it.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // IDebuggerManagerAccessForEngines
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class IDebuggerManagerAccessForEngines | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~IDebuggerManagerAccessForEngines() {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     // This is the part of the interface that's exclusively seen by the
 | 
					
						
							| 
									
										
										
										
											2009-02-20 17:07:00 +01:00
										 |  |  |     // debugger engines
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     friend class GdbEngine; | 
					
						
							| 
									
										
										
										
											2009-02-20 14:56:36 +01:00
										 |  |  |     friend class CdbDebugEngine; | 
					
						
							|  |  |  |     friend class CdbDebugEventCallback; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     friend class ScriptEngine; | 
					
						
							| 
									
										
										
										
											2009-02-20 17:07:00 +01:00
										 |  |  |     friend struct CdbDebugEnginePrivate; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // called from the engines after successful startup
 | 
					
						
							| 
									
										
										
										
											2009-02-16 18:28:15 +01:00
										 |  |  |     virtual void notifyInferiorStopRequested() = 0; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     virtual void notifyInferiorStopped() = 0;  | 
					
						
							|  |  |  |     virtual void notifyInferiorRunningRequested() = 0; | 
					
						
							|  |  |  |     virtual void notifyInferiorRunning() = 0; | 
					
						
							|  |  |  |     virtual void notifyInferiorExited() = 0; | 
					
						
							|  |  |  |     virtual void notifyInferiorPidChanged(int) = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual DisassemblerHandler *disassemblerHandler() = 0; | 
					
						
							|  |  |  |     virtual ModulesHandler *modulesHandler() = 0; | 
					
						
							|  |  |  |     virtual BreakHandler *breakHandler() = 0; | 
					
						
							|  |  |  |     virtual RegisterHandler *registerHandler() = 0; | 
					
						
							|  |  |  |     virtual StackHandler *stackHandler() = 0; | 
					
						
							|  |  |  |     virtual ThreadsHandler *threadsHandler() = 0; | 
					
						
							|  |  |  |     virtual WatchHandler *watchHandler() = 0; | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     virtual SourceFilesWindow *sourceFileWindow() = 0; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:49 +01:00
										 |  |  |     virtual void showApplicationOutput(const QString &data) = 0; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     virtual bool skipKnownFrames() const = 0; | 
					
						
							|  |  |  |     virtual bool debugDumpers() const = 0; | 
					
						
							|  |  |  |     virtual bool useCustomDumpers() const = 0; | 
					
						
							| 
									
										
										
										
											2009-02-12 13:04:01 +01:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2009-03-10 17:30:11 +01:00
										 |  |  |     virtual bool wantsSourceFileList() const = 0; | 
					
						
							| 
									
										
										
										
											2009-02-12 13:04:01 +01:00
										 |  |  |     virtual bool wantsAllPluginBreakpoints() const = 0; | 
					
						
							|  |  |  |     virtual bool wantsSelectedPluginBreakpoints() const = 0; | 
					
						
							|  |  |  |     virtual bool wantsNoPluginBreakpoints() const = 0; | 
					
						
							|  |  |  |     virtual QString selectedPluginBreakpointsPattern() const = 0; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     virtual void reloadDisassembler() = 0; | 
					
						
							|  |  |  |     virtual void reloadModules() = 0; | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     virtual void reloadSourceFiles() = 0; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     virtual void reloadRegisters() = 0; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  | //
 | 
					
						
							|  |  |  | // DebuggerSettings
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DebuggerSettings | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     DebuggerSettings(); | 
					
						
							| 
									
										
										
										
											2009-03-10 18:38:14 +01:00
										 |  |  |     QString dump(); | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     QString m_gdbCmd; | 
					
						
							|  |  |  |     QString m_gdbEnv; | 
					
						
							|  |  |  |     bool m_autoRun; | 
					
						
							|  |  |  |     bool m_autoQuit; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool m_useCustomDumpers; | 
					
						
							|  |  |  |     bool m_skipKnownFrames; | 
					
						
							|  |  |  |     bool m_debugDumpers; | 
					
						
							|  |  |  |     bool m_useToolTips; | 
					
						
							| 
									
										
										
										
											2009-03-10 17:30:11 +01:00
										 |  |  |     bool m_listSourceFiles; | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     QString m_scriptFile; | 
					
						
							| 
									
										
										
										
											2009-02-12 11:18:38 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     bool m_pluginAllBreakpoints; | 
					
						
							|  |  |  |     bool m_pluginSelectedBreakpoints; | 
					
						
							|  |  |  |     bool m_pluginNoBreakpoints; | 
					
						
							|  |  |  |     QString m_pluginSelectedBreakpointsPattern; | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | //
 | 
					
						
							|  |  |  | // DebuggerManager
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DebuggerManager : public QObject, | 
					
						
							| 
									
										
										
										
											2009-01-13 18:15:24 +01:00
										 |  |  |     public IDebuggerManagerAccessForEngines | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     DebuggerManager(); | 
					
						
							|  |  |  |     ~DebuggerManager(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     IDebuggerManagerAccessForEngines *engineInterface(); | 
					
						
							|  |  |  |     QMainWindow *mainWindow() const { return m_mainWindow; } | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     QLabel *statusLabel() const { return m_statusLabel; } | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  |     DebuggerSettings *settings() { return &m_settings; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     enum DebuggerType { GdbDebugger, ScriptDebugger, WinDebugger }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public slots: | 
					
						
							| 
									
										
										
										
											2009-03-02 15:14:12 +01:00
										 |  |  |     bool startNewDebugger(DebuggerStartMode mode); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void exitDebugger();  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void setSimpleDockWidgetArrangement(); | 
					
						
							|  |  |  |     void setLocked(bool locked); | 
					
						
							|  |  |  |     void dockToggled(bool on); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void setBusyCursor(bool on); | 
					
						
							|  |  |  |     void queryCurrentTextEditor(QString *fileName, int *lineNumber, QObject **ed); | 
					
						
							|  |  |  |     void querySessionValue(const QString &name, QVariant *value); | 
					
						
							|  |  |  |     void setSessionValue(const QString &name, const QVariant &value); | 
					
						
							|  |  |  |     QVariant configValue(const QString &name); | 
					
						
							|  |  |  |     void queryConfigValue(const QString &name, QVariant *value); | 
					
						
							|  |  |  |     void setConfigValue(const QString &name, const QVariant &value); | 
					
						
							|  |  |  |     QVariant sessionValue(const QString &name); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void gotoLocation(const QString &file, int line, bool setLocationMarker); | 
					
						
							| 
									
										
										
										
											2009-03-10 19:35:17 +01:00
										 |  |  |     void fileOpen(const QString &file); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void resetLocation(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void interruptDebuggingRequest(); | 
					
						
							|  |  |  |     void startExternalApplication(); | 
					
						
							|  |  |  |     void attachExternalApplication(); | 
					
						
							| 
									
										
										
										
											2009-03-02 13:08:30 +01:00
										 |  |  |     void attachCore(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void jumpToLineExec(); | 
					
						
							|  |  |  |     void runToLineExec(); | 
					
						
							|  |  |  |     void runToFunctionExec(); | 
					
						
							|  |  |  |     void toggleBreakpoint(); | 
					
						
							|  |  |  |     void breakByFunction(); | 
					
						
							|  |  |  |     void breakByFunction(const QString &functionName); | 
					
						
							|  |  |  |     void setBreakpoint(const QString &fileName, int lineNumber); | 
					
						
							|  |  |  |     void watchExpression(const QString &expression); | 
					
						
							|  |  |  |     void breakAtMain(); | 
					
						
							|  |  |  |     void activateFrame(int index); | 
					
						
							|  |  |  |     void selectThread(int index); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void stepExec(); | 
					
						
							|  |  |  |     void stepOutExec(); | 
					
						
							|  |  |  |     void nextExec(); | 
					
						
							|  |  |  |     void stepIExec(); | 
					
						
							|  |  |  |     void nextIExec(); | 
					
						
							|  |  |  |     void continueExec(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void addToWatchWindow(); | 
					
						
							|  |  |  |     void updateWatchModel(); | 
					
						
							|  |  |  |     void removeWatchExpression(const QString &iname); | 
					
						
							|  |  |  |     void expandChildren(const QModelIndex &idx); | 
					
						
							|  |  |  |     void collapseChildren(const QModelIndex &idx); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     void sessionLoaded(); | 
					
						
							|  |  |  |     void aboutToSaveSession(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void assignValueInDebugger(const QString &expr, const QString &value); | 
					
						
							|  |  |  |     void executeDebuggerCommand(const QString &command); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     void showStatusMessage(const QString &msg, int timeout = -1); // -1 forever
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-27 15:53:50 +01:00
										 |  |  |     void setUseCustomDumpers(bool on); | 
					
						
							|  |  |  |     void setDebugDumpers(bool on); | 
					
						
							|  |  |  |     void setSkipKnownFrames(bool on); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | private slots: | 
					
						
							|  |  |  |     void showDebuggerOutput(const QString &prefix, const QString &msg); | 
					
						
							|  |  |  |     void showDebuggerInput(const QString &prefix, const QString &msg); | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:49 +01:00
										 |  |  |     void showApplicationOutput(const QString &data); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void reloadDisassembler(); | 
					
						
							|  |  |  |     void disassemblerDockToggled(bool on); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     void reloadSourceFiles(); | 
					
						
							|  |  |  |     void sourceFilesDockToggled(bool on); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void reloadModules(); | 
					
						
							|  |  |  |     void modulesDockToggled(bool on); | 
					
						
							|  |  |  |     void loadSymbols(const QString &moduleName); | 
					
						
							|  |  |  |     void loadAllSymbols(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void reloadRegisters(); | 
					
						
							|  |  |  |     void registerDockToggled(bool on); | 
					
						
							|  |  |  |     void setStatus(int status); | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     void clearStatusMessage(); | 
					
						
							| 
									
										
										
										
											2009-03-10 17:30:11 +01:00
										 |  |  |     void attemptBreakpointSynchronization(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Implementation of IDebuggerManagerAccessForEngines
 | 
					
						
							|  |  |  |     // 
 | 
					
						
							|  |  |  |     DisassemblerHandler *disassemblerHandler() { return m_disassemblerHandler; } | 
					
						
							|  |  |  |     ModulesHandler *modulesHandler() { return m_modulesHandler; } | 
					
						
							|  |  |  |     BreakHandler *breakHandler() { return m_breakHandler; } | 
					
						
							|  |  |  |     RegisterHandler *registerHandler() { return m_registerHandler; } | 
					
						
							|  |  |  |     StackHandler *stackHandler() { return m_stackHandler; } | 
					
						
							|  |  |  |     ThreadsHandler *threadsHandler() { return m_threadsHandler; } | 
					
						
							|  |  |  |     WatchHandler *watchHandler() { return m_watchHandler; } | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     SourceFilesWindow *sourceFileWindow() { return m_sourceFilesWindow; } | 
					
						
							| 
									
										
										
										
											2009-01-27 15:53:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     bool skipKnownFrames() const; | 
					
						
							|  |  |  |     bool debugDumpers() const; | 
					
						
							|  |  |  |     bool useCustomDumpers() const; | 
					
						
							| 
									
										
										
										
											2009-03-10 17:30:11 +01:00
										 |  |  |     bool wantsSourceFileList() const | 
					
						
							|  |  |  |         { return m_settings.m_listSourceFiles; } | 
					
						
							| 
									
										
										
										
											2009-02-12 13:04:01 +01:00
										 |  |  |     bool wantsAllPluginBreakpoints() const | 
					
						
							|  |  |  |         { return m_settings.m_pluginAllBreakpoints; } | 
					
						
							|  |  |  |     bool wantsSelectedPluginBreakpoints() const | 
					
						
							|  |  |  |         { return m_settings.m_pluginSelectedBreakpoints; } | 
					
						
							|  |  |  |     bool wantsNoPluginBreakpoints() const | 
					
						
							|  |  |  |         { return m_settings.m_pluginNoBreakpoints; } | 
					
						
							|  |  |  |     QString selectedPluginBreakpointsPattern() const | 
					
						
							|  |  |  |         { return m_settings.m_pluginSelectedBreakpointsPattern; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void notifyInferiorStopped(); | 
					
						
							|  |  |  |     void notifyInferiorRunningRequested(); | 
					
						
							| 
									
										
										
										
											2009-02-16 18:28:15 +01:00
										 |  |  |     void notifyInferiorStopRequested(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void notifyInferiorRunning(); | 
					
						
							|  |  |  |     void notifyInferiorExited(); | 
					
						
							|  |  |  |     void notifyInferiorPidChanged(int); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void cleanupViews();  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Implementation of IDebuggerManagerAccessForDebugMode
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     QWidget *threadsWindow() const { return m_threadsWindow; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QList<QDockWidget*> dockWidgets() const { return m_dockWidgets; } | 
					
						
							|  |  |  |     void createDockWidgets(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //    
 | 
					
						
							|  |  |  |     // internal implementation
 | 
					
						
							|  |  |  |     //  
 | 
					
						
							|  |  |  |     Q_SLOT void loadSessionData(); | 
					
						
							|  |  |  |     Q_SLOT void saveSessionData(); | 
					
						
							|  |  |  |     Q_SLOT void dumpLog(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     // stuff in this block should be made private by moving it to 
 | 
					
						
							|  |  |  |     // one of the interfaces
 | 
					
						
							|  |  |  |     QAbstractItemModel *threadsModel(); | 
					
						
							|  |  |  |     int status() const { return m_status; } | 
					
						
							| 
									
										
										
										
											2009-03-02 15:14:12 +01:00
										 |  |  |     DebuggerStartMode startMode() const { return m_startMode; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | signals: | 
					
						
							|  |  |  |     void debuggingFinished(); | 
					
						
							|  |  |  |     void inferiorPidChanged(qint64 pid); | 
					
						
							|  |  |  |     void statusChanged(int newstatus); | 
					
						
							|  |  |  |     void debugModeRequested(); | 
					
						
							|  |  |  |     void previousModeRequested(); | 
					
						
							|  |  |  |     void statusMessageRequested(const QString &msg, int timeout); // -1 for 'forever'
 | 
					
						
							|  |  |  |     void gotoLocationRequested(const QString &file, int line, bool setLocationMarker); | 
					
						
							|  |  |  |     void resetLocationRequested(); | 
					
						
							|  |  |  |     void currentTextEditorRequested(QString *fileName, int *lineNumber, QObject **ob); | 
					
						
							|  |  |  |     void currentMainWindowRequested(QWidget **); | 
					
						
							|  |  |  |     void sessionValueRequested(const QString &name, QVariant *value); | 
					
						
							|  |  |  |     void setSessionValueRequested(const QString &name, const QVariant &value); | 
					
						
							|  |  |  |     void configValueRequested(const QString &name, QVariant *value); | 
					
						
							|  |  |  |     void setConfigValueRequested(const QString &name, const QVariant &value); | 
					
						
							| 
									
										
										
										
											2009-01-15 14:30:49 +01:00
										 |  |  |     void applicationOutputAvailable(const QString &output); | 
					
						
							| 
									
										
										
										
											2009-02-27 11:41:19 +01:00
										 |  |  |     void settingsDialogRequested(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     // FIXME: make private
 | 
					
						
							|  |  |  |     QString m_executable; | 
					
						
							| 
									
										
										
										
											2009-03-02 15:14:12 +01:00
										 |  |  |     QString m_coreFile; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QStringList m_environment; | 
					
						
							|  |  |  |     QString m_workingDir; | 
					
						
							|  |  |  |     QString m_buildDir; | 
					
						
							|  |  |  |     QStringList m_processArgs; | 
					
						
							|  |  |  |     int m_attachedPID; | 
					
						
							| 
									
										
										
										
											2009-02-20 12:33:16 +01:00
										 |  |  |     bool m_useTerminal; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     void init(); | 
					
						
							|  |  |  |     void setDebuggerType(DebuggerType type); | 
					
						
							|  |  |  |     QDockWidget *createDockForWidget(QWidget *widget); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void shutdown(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void toggleBreakpoint(const QString &fileName, int lineNumber); | 
					
						
							|  |  |  |     void setToolTipExpression(const QPoint &pos, const QString &exp0); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-02 15:14:12 +01:00
										 |  |  |     DebuggerStartMode m_startMode; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     DebuggerType m_debuggerType; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /// Views
 | 
					
						
							|  |  |  |     QMainWindow *m_mainWindow; | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     QLabel *m_statusLabel; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QDockWidget *m_breakDock; | 
					
						
							|  |  |  |     QDockWidget *m_disassemblerDock; | 
					
						
							|  |  |  |     QDockWidget *m_modulesDock; | 
					
						
							|  |  |  |     QDockWidget *m_outputDock; | 
					
						
							|  |  |  |     QDockWidget *m_registerDock; | 
					
						
							|  |  |  |     QDockWidget *m_stackDock; | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     QDockWidget *m_sourceFilesDock; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QDockWidget *m_threadsDock; | 
					
						
							|  |  |  |     QDockWidget *m_watchDock; | 
					
						
							|  |  |  |     QList<QDockWidget*> m_dockWidgets; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     BreakHandler *m_breakHandler; | 
					
						
							|  |  |  |     DisassemblerHandler *m_disassemblerHandler; | 
					
						
							|  |  |  |     ModulesHandler *m_modulesHandler; | 
					
						
							|  |  |  |     RegisterHandler *m_registerHandler; | 
					
						
							|  |  |  |     StackHandler *m_stackHandler; | 
					
						
							|  |  |  |     ThreadsHandler *m_threadsHandler; | 
					
						
							|  |  |  |     WatchHandler *m_watchHandler; | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     SourceFilesWindow *m_sourceFilesWindow; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /// Actions
 | 
					
						
							|  |  |  |     friend class DebuggerPlugin; | 
					
						
							|  |  |  |     QAction *m_startExternalAction; | 
					
						
							|  |  |  |     QAction *m_attachExternalAction; | 
					
						
							| 
									
										
										
										
											2009-03-02 13:08:30 +01:00
										 |  |  |     QAction *m_attachCoreAction; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QAction *m_continueAction; | 
					
						
							|  |  |  |     QAction *m_stopAction; | 
					
						
							|  |  |  |     QAction *m_resetAction; // FIXME: Should not be needed in a stable release
 | 
					
						
							|  |  |  |     QAction *m_stepAction; | 
					
						
							|  |  |  |     QAction *m_stepOutAction; | 
					
						
							|  |  |  |     QAction *m_runToLineAction; | 
					
						
							|  |  |  |     QAction *m_runToFunctionAction; | 
					
						
							|  |  |  |     QAction *m_jumpToLineAction; | 
					
						
							|  |  |  |     QAction *m_nextAction; | 
					
						
							|  |  |  |     QAction *m_watchAction; | 
					
						
							|  |  |  |     QAction *m_breakAction; | 
					
						
							|  |  |  |     QAction *m_breakByFunctionAction; | 
					
						
							|  |  |  |     QAction *m_breakAtMainAction; | 
					
						
							|  |  |  |     QAction *m_sepAction; | 
					
						
							|  |  |  |     QAction *m_stepIAction; | 
					
						
							|  |  |  |     QAction *m_nextIAction; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QWidget *m_breakWindow; | 
					
						
							|  |  |  |     QWidget *m_disassemblerWindow; | 
					
						
							|  |  |  |     QWidget *m_localsWindow; | 
					
						
							|  |  |  |     QWidget *m_registerWindow; | 
					
						
							|  |  |  |     QWidget *m_modulesWindow; | 
					
						
							|  |  |  |     QWidget *m_tooltipWindow; | 
					
						
							|  |  |  |     QWidget *m_stackWindow; | 
					
						
							|  |  |  |     QWidget *m_threadsWindow; | 
					
						
							|  |  |  |     QWidget *m_watchersWindow; | 
					
						
							|  |  |  |     DebuggerOutputWindow *m_outputWindow; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int m_status; | 
					
						
							|  |  |  |     bool m_busy; | 
					
						
							| 
									
										
										
										
											2008-12-08 14:26:11 +01:00
										 |  |  |     QTimer *m_statusTimer; | 
					
						
							|  |  |  |     QString m_lastPermanentStatusMessage; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     IDebuggerEngine *engine(); | 
					
						
							|  |  |  |     IDebuggerEngine *m_engine; | 
					
						
							| 
									
										
										
										
											2009-01-14 18:09:02 +01:00
										 |  |  |     DebuggerSettings m_settings; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Internal
 | 
					
						
							|  |  |  | } // namespace Debugger
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // DEBUGGER_DEBUGGERMANAGER_H
 |