| 
									
										
										
										
											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
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-06-17 00:01:27 +10:00
										 |  |  | ** Contact: Nokia Corporation (qt-info@nokia.com) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2009-08-14 09:30:56 +02:00
										 |  |  | ** contact the sales department at http://qt.nokia.com/contact.
 | 
					
						
							| 
									
										
										
										
											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_GDBENGINE_H
 | 
					
						
							|  |  |  | #define DEBUGGER_GDBENGINE_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-09 12:27:55 +01:00
										 |  |  | #include "idebuggerengine.h"
 | 
					
						
							| 
									
										
										
										
											2009-09-10 13:09:42 +02:00
										 |  |  | #include "debuggermanager.h" // only for StartParameters
 | 
					
						
							| 
									
										
										
										
											2008-12-09 12:27:55 +01:00
										 |  |  | #include "gdbmi.h"
 | 
					
						
							| 
									
										
										
										
											2009-04-29 14:15:09 +02:00
										 |  |  | #include "watchutils.h"
 | 
					
						
							| 
									
										
										
										
											2009-02-20 12:33:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <QtCore/QByteArray>
 | 
					
						
							|  |  |  | #include <QtCore/QHash>
 | 
					
						
							|  |  |  | #include <QtCore/QMap>
 | 
					
						
							|  |  |  | #include <QtCore/QObject>
 | 
					
						
							|  |  |  | #include <QtCore/QProcess>
 | 
					
						
							|  |  |  | #include <QtCore/QPoint>
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | #include <QtCore/QSet>
 | 
					
						
							| 
									
										
										
										
											2009-01-15 14:47:14 +01:00
										 |  |  | #include <QtCore/QTextCodec>
 | 
					
						
							| 
									
										
										
										
											2009-07-06 11:37:21 +02:00
										 |  |  | #include <QtCore/QTime>
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <QtCore/QVariant>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QT_BEGIN_NAMESPACE | 
					
						
							|  |  |  | class QAction; | 
					
						
							|  |  |  | class QAbstractItemModel; | 
					
						
							| 
									
										
										
										
											2009-11-03 14:56:27 +01:00
										 |  |  | class QTimer; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class QWidget; | 
					
						
							| 
									
										
										
										
											2009-09-25 15:02:16 +02:00
										 |  |  | class QMainWindow; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | QT_END_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Debugger { | 
					
						
							| 
									
										
										
										
											2009-09-25 16:01:28 +02:00
										 |  |  | class DebuggerManager; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | class AbstractGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  | class GdbResponse; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class GdbMi; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BreakpointData; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class WatchData; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class AttachGdbAdapter; | 
					
						
							|  |  |  | class CoreGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 09:54:21 +02:00
										 |  |  | class PlainGdbAdapter; | 
					
						
							|  |  |  | class RemoteGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class TrkGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-10-05 14:59:39 +02:00
										 |  |  | struct TrkOptions; | 
					
						
							| 
									
										
										
										
											2009-09-23 09:54:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-07 16:39:17 +02:00
										 |  |  | enum DebuggingHelperState | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2009-04-07 16:39:17 +02:00
										 |  |  |     DebuggingHelperUninitialized, | 
					
						
							|  |  |  |     DebuggingHelperLoadTried, | 
					
						
							|  |  |  |     DebuggingHelperAvailable, | 
					
						
							|  |  |  |     DebuggingHelperUnavailable, | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GdbEngine : public IDebuggerEngine | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2009-09-25 08:35:31 +02:00
										 |  |  |     explicit GdbEngine(DebuggerManager *manager); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     ~GdbEngine(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2009-10-07 17:36:44 +02:00
										 |  |  |     friend class AbstractGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  |     friend class AttachGdbAdapter; | 
					
						
							|  |  |  |     friend class CoreGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-11 15:53:08 +02:00
										 |  |  |     friend class PlainGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-10-07 10:25:26 +02:00
										 |  |  |     friend class TermGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-22 10:50:44 +02:00
										 |  |  |     friend class RemoteGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  |     friend class TrkGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-11 12:30:53 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// General Interface //////////
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void addOptionPages(QList<Core::IOptionsPage*> *opts) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual bool checkConfiguration(int toolChain, QString *errorMessage, QString *settingsPage= 0) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual bool isGdbEngine() const { return true; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void startDebugger(const DebuggerStartParametersPtr &sp); | 
					
						
							|  |  |  |     virtual void exitDebugger(); | 
					
						
							|  |  |  |     virtual void detachDebugger(); | 
					
						
							|  |  |  |     virtual void shutdown(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void executeDebuggerCommand(const QString &command); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// General State //////////
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void initializeVariables(); | 
					
						
							|  |  |  |     DebuggerStartMode startMode() const; | 
					
						
							|  |  |  |     const DebuggerStartParameters &startParameters() const | 
					
						
							|  |  |  |         { return *m_startParameters; } | 
					
						
							|  |  |  |     Q_SLOT void setAutoDerefPointers(const QVariant &on); | 
					
						
							| 
									
										
										
										
											2009-08-12 10:51:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     DebuggerStartParametersPtr m_startParameters; | 
					
						
							|  |  |  |     QSharedPointer<TrkOptions> m_trkOptions; | 
					
						
							| 
									
										
										
										
											2009-10-30 16:42:33 +01:00
										 |  |  |     bool m_registerNamesListed; | 
					
						
							| 
									
										
										
										
											2009-08-14 13:04:05 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// Gdb Process Management //////////
 | 
					
						
							| 
									
										
										
										
											2009-01-27 15:53:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     AbstractGdbAdapter *createAdapter(const DebuggerStartParametersPtr &dp); | 
					
						
							|  |  |  |     void connectAdapter(); | 
					
						
							| 
									
										
										
										
											2009-10-26 11:55:02 +01:00
										 |  |  |     bool startGdb(const QStringList &args = QStringList(), | 
					
						
							|  |  |  |                   const QString &gdb = QString(), | 
					
						
							|  |  |  |                   const QString &settingsIdHint = QString()); | 
					
						
							| 
									
										
										
										
											2009-10-19 19:04:01 +02:00
										 |  |  |     void startInferiorPhase2(); | 
					
						
							| 
									
										
										
										
											2009-10-08 17:23:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-20 11:02:16 +02:00
										 |  |  |     void handleInferiorShutdown(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleGdbExit(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void gdbInputAvailable(int channel, const QString &msg) | 
					
						
							|  |  |  |     { m_manager->showDebuggerInput(channel, msg); } | 
					
						
							|  |  |  |     void gdbOutputAvailable(int channel, const QString &msg) | 
					
						
							|  |  |  |     { m_manager->showDebuggerOutput(channel, msg); } | 
					
						
							| 
									
										
										
										
											2009-04-20 16:40:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private slots: | 
					
						
							| 
									
										
										
										
											2009-10-20 11:02:16 +02:00
										 |  |  |     void handleGdbFinished(int, QProcess::ExitStatus status); | 
					
						
							|  |  |  |     void handleGdbError(QProcess::ProcessError error); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void readGdbStandardOutput(); | 
					
						
							|  |  |  |     void readGdbStandardError(); | 
					
						
							|  |  |  |     void readDebugeeOutput(const QByteArray &data); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleAdapterStarted(); | 
					
						
							|  |  |  |     void handleAdapterStartFailed(const QString &msg, const QString &settingsIdHint = QString()); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-19 19:04:01 +02:00
										 |  |  |     void handleInferiorPrepared(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleInferiorStartFailed(const QString &msg); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void handleAdapterCrashed(const QString &msg); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: | 
					
						
							|  |  |  |     QTextCodec *m_outputCodec; | 
					
						
							|  |  |  |     QTextCodec::ConverterState m_outputCodecState; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QByteArray m_inbuffer; | 
					
						
							| 
									
										
										
										
											2009-10-27 12:05:03 +01:00
										 |  |  |     bool m_busy; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-20 11:02:16 +02:00
										 |  |  |     QProcess m_gdbProc; | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     AbstractGdbAdapter *m_gdbAdapter; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: ////////// Gdb Command Management //////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public: // otherwise the Qt flag macros are unhappy
 | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |     enum GdbCommandFlag { | 
					
						
							|  |  |  |         NoFlags = 0, | 
					
						
							| 
									
										
										
										
											2009-10-12 12:05:35 +02:00
										 |  |  |         NeedsStop = 1,    // The command needs a stopped inferior
 | 
					
						
							|  |  |  |         Discardable = 2,  // No need to wait for the reply before continuing inferior
 | 
					
						
							|  |  |  |         RebuildModel = 4, // Trigger model rebuild when no such commands are pending any more
 | 
					
						
							| 
									
										
										
										
											2009-08-18 11:23:01 +02:00
										 |  |  |         WatchUpdate = Discardable | RebuildModel, | 
					
						
							| 
									
										
										
										
											2009-10-12 12:05:35 +02:00
										 |  |  |         EmbedToken = 8,   // Expand %1 in the command to the command token
 | 
					
						
							| 
									
										
										
										
											2009-11-02 16:59:57 +01:00
										 |  |  |         RunRequest = 16,  // Callback expects GdbResultRunning instead of GdbResultDone
 | 
					
						
							|  |  |  |         ExitRequest = 32, // Callback expects GdbResultExit instead of GdbResultDone
 | 
					
						
							|  |  |  |         LosesChild = 64   // Auto-set inferior shutdown related states
 | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  |     Q_DECLARE_FLAGS(GdbCommandFlags, GdbCommandFlag) | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     private: | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |     typedef void (GdbEngine::*GdbCommandCallback) | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |         (const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |     typedef void (AbstractGdbAdapter::*AdapterCallback) | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |         (const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     struct GdbCommand | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |         GdbCommand() | 
					
						
							|  |  |  |             : flags(0), callback(0), adapterCallback(0), callbackName(0) | 
					
						
							|  |  |  |         {} | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         int flags; | 
					
						
							|  |  |  |         GdbCommandCallback callback; | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |         AdapterCallback adapterCallback; | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |         const char *callbackName; | 
					
						
							|  |  |  |         QString command; | 
					
						
							|  |  |  |         QVariant cookie; | 
					
						
							| 
									
										
										
										
											2009-07-06 11:37:21 +02:00
										 |  |  |         QTime postTime; | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     // type and cookie are sender-internal data, opaque for the "event
 | 
					
						
							|  |  |  |     // queue". resultNeeded == true increments m_pendingResults on
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     // send and decrements on receipt, effectively preventing
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     // watch model updates before everything is finished.
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |     void flushCommand(const GdbCommand &cmd); | 
					
						
							| 
									
										
										
										
											2009-05-07 09:51:21 +02:00
										 |  |  |     void postCommand(const QString &command, | 
					
						
							| 
									
										
										
										
											2009-05-05 11:16:54 +02:00
										 |  |  |                      GdbCommandFlags flags, | 
					
						
							|  |  |  |                      GdbCommandCallback callback = 0, | 
					
						
							|  |  |  |                      const char *callbackName = 0, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2009-05-07 09:51:21 +02:00
										 |  |  |     void postCommand(const QString &command, | 
					
						
							| 
									
										
										
										
											2009-05-05 11:16:54 +02:00
										 |  |  |                      GdbCommandCallback callback = 0, | 
					
						
							|  |  |  |                      const char *callbackName = 0, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |     void postCommand(const QString &command, | 
					
						
							|  |  |  |                      AdapterCallback callback, | 
					
						
							|  |  |  |                      const char *callbackName, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2009-09-21 17:35:19 +02:00
										 |  |  |     void postCommand(const QString &command, | 
					
						
							|  |  |  |                      GdbCommandFlags flags, | 
					
						
							|  |  |  |                      AdapterCallback callback, | 
					
						
							|  |  |  |                      const char *callbackName, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |     void postCommandHelper(const GdbCommand &cmd); | 
					
						
							| 
									
										
										
										
											2009-11-02 16:40:16 +01:00
										 |  |  |     void flushQueuedCommands(); | 
					
						
							| 
									
										
										
										
											2009-11-03 14:56:27 +01:00
										 |  |  |     Q_SLOT void commandTimeout(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void setTokenBarrier(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QHash<int, GdbCommand> m_cookieForToken; | 
					
						
							| 
									
										
										
										
											2009-11-03 14:56:27 +01:00
										 |  |  |     QTimer *m_commandTimer; | 
					
						
							|  |  |  |     enum { COMMAND_TIMEOUT = 20000 }; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QByteArray m_pendingConsoleStreamOutput; | 
					
						
							|  |  |  |     QByteArray m_pendingLogStreamOutput; | 
					
						
							| 
									
										
										
										
											2009-10-09 16:35:52 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     // contains the first token number for the current round
 | 
					
						
							|  |  |  |     // of evaluation. Responses with older tokens are considers
 | 
					
						
							|  |  |  |     // out of date and discarded.
 | 
					
						
							|  |  |  |     int m_oldestAcceptableToken; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     int m_pendingRequests; // Watch updating commands in flight
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     typedef void (GdbEngine::*CommandsDoneCallback)(); | 
					
						
							|  |  |  |     // function called after all previous responses have been received
 | 
					
						
							|  |  |  |     CommandsDoneCallback m_commandsDoneCallback; | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QList<GdbCommand> m_commandsToRunOnTemporaryBreak; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: ////////// Gdb Output, State & Capability Handling //////////
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-24 20:34:30 +01:00
										 |  |  |     void handleResponse(const QByteArray &buff); | 
					
						
							| 
									
										
										
										
											2009-10-09 10:20:42 +02:00
										 |  |  |     void handleStopResponse(const GdbMi &data); | 
					
						
							| 
									
										
										
										
											2009-10-23 21:32:08 +02:00
										 |  |  |     void handleResultRecord(GdbResponse *response); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleStop1(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-09 10:59:56 +02:00
										 |  |  |     void handleStop1(const GdbMi &data); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     StackFrame parseStackFrame(const GdbMi &mi, int level); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual bool isSynchroneous() const; | 
					
						
							|  |  |  |     bool supportsThreads() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Gdb initialization sequence
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleShowVersion(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-14 09:41:14 +02:00
										 |  |  |     void handleIsSynchroneous(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-22 11:08:06 +02:00
										 |  |  |     int m_gdbVersion; // 6.8.0 is 60800
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     int m_gdbBuildVersion; // MAC only?
 | 
					
						
							| 
									
										
										
										
											2009-10-22 11:08:06 +02:00
										 |  |  |     bool m_isMacGdb; | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     bool m_isSynchroneous; // Can act synchroneously?
 | 
					
						
							| 
									
										
										
										
											2009-09-14 11:02:36 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// Inferior Management //////////
 | 
					
						
							| 
									
										
										
										
											2009-05-14 15:03:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     // This should be always the last call in a function.
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     Q_SLOT virtual void attemptBreakpointSynchronization(); | 
					
						
							| 
									
										
										
										
											2009-01-15 14:47:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void stepExec(); | 
					
						
							|  |  |  |     virtual void stepOutExec(); | 
					
						
							|  |  |  |     virtual void nextExec(); | 
					
						
							|  |  |  |     virtual void stepIExec(); | 
					
						
							|  |  |  |     virtual void nextIExec(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void continueInferiorInternal(); | 
					
						
							|  |  |  |     void autoContinueInferior(); | 
					
						
							|  |  |  |     virtual void continueInferior(); | 
					
						
							|  |  |  |     virtual void interruptInferior(); | 
					
						
							| 
									
										
										
										
											2009-11-02 16:59:57 +01:00
										 |  |  |     void interruptInferiorTemporarily(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void runToLineExec(const QString &fileName, int lineNumber); | 
					
						
							|  |  |  |     virtual void runToFunctionExec(const QString &functionName); | 
					
						
							|  |  |  | //    void handleExecRunToFunction(const GdbResponse &response);
 | 
					
						
							|  |  |  |     virtual void jumpToLineExec(const QString &fileName, int lineNumber); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleExecContinue(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     qint64 inferiorPid() const { return m_manager->inferiorPid(); } | 
					
						
							|  |  |  |     void handleInferiorPidChanged(qint64 pid) { manager()->notifyInferiorPidChanged(pid); } | 
					
						
							|  |  |  |     void maybeHandleInferiorPidChanged(const QString &pid); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-30 17:16:56 +01:00
										 |  |  | #ifdef Q_OS_LINUX
 | 
					
						
							|  |  |  |     QByteArray m_entryPoint; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// View & Data Stuff //////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void selectThread(int index); | 
					
						
							|  |  |  |     virtual void activateFrame(int index); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void gotoLocation(const StackFrame &frame, bool setLocationMarker); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Breakpoint specific stuff
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleBreakList(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void handleBreakList(const GdbMi &table); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleBreakIgnore(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleBreakInsert(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleBreakInsert1(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleBreakCondition(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleBreakInfo(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void extractDataFromInfoBreak(const QString &output, BreakpointData *data); | 
					
						
							|  |  |  |     void breakpointDataFromOutput(BreakpointData *data, const GdbMi &bkpt); | 
					
						
							|  |  |  |     void sendInsertBreakpoint(int index); | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     QString breakLocation(const QString &file) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Modules specific stuff
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void loadSymbols(const QString &moduleName); | 
					
						
							|  |  |  |     virtual void loadAllSymbols(); | 
					
						
							|  |  |  |     virtual QList<Symbol> moduleSymbols(const QString &moduleName); | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     virtual void reloadModules(); | 
					
						
							| 
									
										
										
										
											2009-10-28 22:08:58 +01:00
										 |  |  |     void reloadModulesInternal(); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleModulesList(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     bool m_modulesListOutdated; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Register specific stuff
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     Q_SLOT virtual void reloadRegisters(); | 
					
						
							|  |  |  |     virtual void setRegisterValue(int nr, const QString &value); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleRegisterListNames(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleRegisterListValues(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Disassembler specific stuff
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     virtual void fetchDisassembler(DisassemblerViewAgent *agent, | 
					
						
							|  |  |  |         const StackFrame &frame); | 
					
						
							|  |  |  |     void fetchDisassemblerByAddress(DisassemblerViewAgent *agent, | 
					
						
							|  |  |  |         bool useMixedMode); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByLine(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByAddress1(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByAddress0(const GdbResponse &response); | 
					
						
							|  |  |  |     QString parseDisassembler(const GdbMi &lines); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Source file specific stuff
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     virtual void reloadSourceFiles(); | 
					
						
							| 
									
										
										
										
											2009-10-28 22:08:58 +01:00
										 |  |  |     void reloadSourceFilesInternal(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleQuerySources(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QString fullName(const QString &fileName); | 
					
						
							| 
									
										
										
										
											2009-10-28 11:59:57 +01:00
										 |  |  | #ifdef Q_OS_WIN
 | 
					
						
							|  |  |  |     QString cleanupFullName(const QString &fileName); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  |     QString cleanupFullName(const QString &fileName) { return fileName; } | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // awful hack to keep track of used files
 | 
					
						
							|  |  |  |     QMap<QString, QString> m_shortToFullName; | 
					
						
							|  |  |  |     QMap<QString, QString> m_fullToShortName; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     bool m_sourcesListOutdated; | 
					
						
							|  |  |  |     bool m_sourcesListUpdating; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Stack specific stuff
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void updateAll(); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleStackListFrames(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleStackSelectThread(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleStackListThreads(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-27 16:36:23 +01:00
										 |  |  |     void handleStackFrame(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-05 12:00:47 +02:00
										 |  |  |     Q_SLOT void reloadStack(bool forceGotoLocation); | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     Q_SLOT virtual void reloadFullStack(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     int currentFrame() const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QList<GdbMi> m_currentFunctionArgs; | 
					
						
							|  |  |  |     QString m_currentFrame; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     // Watch specific stuff
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void assignValueInDebugger(const QString &expr, const QString &value); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void fetchMemory(MemoryViewAgent *agent, quint64 addr, quint64 length); | 
					
						
							|  |  |  |     void handleFetchMemory(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void watchPoint(const QPoint &); | 
					
						
							|  |  |  |     void handleWatchPoint(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // FIXME: BaseClass. called to improve situation for a watch item
 | 
					
						
							|  |  |  |     void updateSubItem(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleChildren(const WatchData &parent, const GdbMi &child, | 
					
						
							|  |  |  |         QList<WatchData> *insertions); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     void virtual updateWatchData(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2009-08-31 09:14:04 +02:00
										 |  |  |     Q_SLOT void updateWatchDataHelper(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2009-06-17 16:00:03 +02:00
										 |  |  |     void rebuildModel(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     bool showToolTip(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void insertData(const WatchData &data); | 
					
						
							|  |  |  |     void sendWatchParameters(const QByteArray ¶ms0); | 
					
						
							|  |  |  |     void createGdbVariable(const WatchData &data); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-07 16:39:17 +02:00
										 |  |  |     void runDebuggingHelper(const WatchData &data, bool dumpChildren); | 
					
						
							|  |  |  |     void runDirectDebuggingHelper(const WatchData &data, bool dumpChildren); | 
					
						
							|  |  |  |     bool hasDebuggingHelperForType(const QString &type) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleVarListChildren(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleVarListChildrenHelper(const GdbMi &child, | 
					
						
							|  |  |  |         const WatchData &parent); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleVarCreate(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleVarAssign(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleEvaluateExpression(const GdbResponse &response); | 
					
						
							|  |  |  |     //void handleToolTip(const GdbResponse &response);
 | 
					
						
							|  |  |  |     void handleQueryDebuggingHelper(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperValue2(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperValue3(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperEditValue(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperSetup(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void updateLocals(const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleStackListLocals(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     WatchData localVariable(const GdbMi &item, | 
					
						
							|  |  |  |                             const QStringList &uninitializedVariables, | 
					
						
							|  |  |  |                             QMap<QByteArray, int> *seen); | 
					
						
							|  |  |  |     void setLocals(const QList<GdbMi> &locals); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleStackListArguments(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void setWatchDataType(WatchData &data, const GdbMi &mi); | 
					
						
							| 
									
										
										
										
											2009-08-25 17:32:14 +02:00
										 |  |  |     void setWatchDataDisplayedType(WatchData &data, const GdbMi &mi); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     QSet<QString> m_processedNames; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     QMap<QString, QString> m_varToType; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// Dumper Management //////////
 | 
					
						
							| 
									
										
										
										
											2009-11-03 14:06:21 +01:00
										 |  |  |     QString qtDumperLibraryName() const; | 
					
						
							|  |  |  |     bool checkDebuggingHelpers(); | 
					
						
							|  |  |  |     void setDebuggingHelperState(DebuggingHelperState); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void tryLoadDebuggingHelpers(); | 
					
						
							|  |  |  |     void tryQueryDebuggingHelpers(); | 
					
						
							|  |  |  |     Q_SLOT void recheckDebuggingHelperAvailability(); | 
					
						
							|  |  |  |     void connectDebuggingHelperActions(); | 
					
						
							|  |  |  |     void disconnectDebuggingHelperActions(); | 
					
						
							|  |  |  |     Q_SLOT void setDebugDebuggingHelpers(const QVariant &on); | 
					
						
							|  |  |  |     Q_SLOT void setUseDebuggingHelpers(const QVariant &on); | 
					
						
							| 
									
										
										
										
											2009-09-22 10:50:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     const bool m_dumperInjectionLoad; | 
					
						
							|  |  |  |     DebuggingHelperState m_debuggingHelperState; | 
					
						
							|  |  |  |     QtDumperHelper m_dumperHelper; | 
					
						
							| 
									
										
										
										
											2009-10-05 14:59:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// Convenience Functions //////////
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-07 17:37:15 +02:00
										 |  |  |     QString errorMessage(QProcess::ProcessError error); | 
					
						
							| 
									
										
										
										
											2009-09-23 09:54:21 +02:00
										 |  |  |     void showMessageBox(int icon, const QString &title, const QString &text); | 
					
						
							| 
									
										
										
										
											2009-09-22 10:50:44 +02:00
										 |  |  |     void debugMessage(const QString &msg); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QMainWindow *mainWindow() const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Internal
 | 
					
						
							|  |  |  | } // namespace Debugger
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  | Q_DECLARE_OPERATORS_FOR_FLAGS(Debugger::Internal::GdbEngine::GdbCommandFlags) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #endif // DEBUGGER_GDBENGINE_H
 |