| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-03-05 11:25:49 +01:00
										 |  |  | ** Copyright (c) 2010 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-16 11:08:54 +02:00
										 |  |  | #include "debuggerengine.h"
 | 
					
						
							| 
									
										
										
										
											2010-06-30 14:39:41 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "stackframe.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>
 | 
					
						
							| 
									
										
										
										
											2010-11-02 16:14:00 +01:00
										 |  |  | #include <QtCore/QProcess>
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <QtCore/QHash>
 | 
					
						
							|  |  |  | #include <QtCore/QMap>
 | 
					
						
							| 
									
										
										
										
											2010-04-08 16:55:25 +02:00
										 |  |  | #include <QtCore/QMultiMap>
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <QtCore/QObject>
 | 
					
						
							|  |  |  | #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 | 
					
						
							| 
									
										
										
										
											2009-12-11 16:59:34 +01:00
										 |  |  | class QMainWindow; | 
					
						
							| 
									
										
										
										
											2009-11-03 14:56:27 +01:00
										 |  |  | class QTimer; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | QT_END_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Debugger { | 
					
						
							|  |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | class AbstractGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  | class AbstractGdbProcess; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  | class DisassemblerAgentCookie; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class AttachGdbAdapter; | 
					
						
							|  |  |  | class CoreGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  | class LocalPlainGdbAdapter; | 
					
						
							|  |  |  | class RemoteGdbServerAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class TrkGdbAdapter; | 
					
						
							| 
									
										
										
										
											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
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 08:34:07 +02:00
										 |  |  | class GdbEngine : public Debugger::DebuggerEngine | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2010-06-16 11:08:54 +02:00
										 |  |  |     explicit GdbEngine(const DebuggerStartParameters &startParameters); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     ~GdbEngine(); | 
					
						
							| 
									
										
										
										
											2010-07-15 16:43:56 +02:00
										 |  |  |     AbstractGdbAdapter *gdbAdapter() const { return m_gdbAdapter; } | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2009-10-07 17:36:44 +02:00
										 |  |  |     friend class AbstractGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  |     friend class AbstractPlainGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  |     friend class AttachGdbAdapter; | 
					
						
							|  |  |  |     friend class CoreGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  |     friend class LocalPlainGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-10-07 10:25:26 +02:00
										 |  |  |     friend class TermGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  |     friend class RemoteGdbServerAdapter; | 
					
						
							|  |  |  |     friend class RemotePlainGdbAdapter; | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  |     friend class TrkGdbAdapter; | 
					
						
							| 
									
										
										
										
											2010-06-25 15:06:30 +02:00
										 |  |  |     friend class TcfTrkGdbAdapter; | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 18:10:50 +02:00
										 |  |  |     virtual void setupEngine(); | 
					
						
							|  |  |  |     virtual void setupInferior(); | 
					
						
							|  |  |  |     virtual void runEngine(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-05 10:23:55 +01:00
										 |  |  |     virtual unsigned debuggerCapabilities() const; | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void detachDebugger(); | 
					
						
							| 
									
										
										
										
											2010-07-09 17:07:59 +02:00
										 |  |  |     virtual void shutdownEngine(); | 
					
						
							|  |  |  |     virtual void shutdownInferior(); | 
					
						
							| 
									
										
										
										
											2010-08-11 09:46:39 +02:00
										 |  |  |     virtual void notifyInferiorSetupFailed(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     virtual void executeDebuggerCommand(const QString &command); | 
					
						
							| 
									
										
										
										
											2010-09-01 17:36:09 +02:00
										 |  |  |     virtual QByteArray qtNamespace() const { return m_dumperHelper.qtNamespace(); } | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2010-09-23 11:15:56 +02:00
										 |  |  |     Q_SLOT void reloadLocals(); | 
					
						
							| 
									
										
										
										
											2009-08-12 10:51:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-14 13:17:54 +02:00
										 |  |  |     AbstractGdbAdapter *createAdapter(); | 
					
						
							| 
									
										
										
										
											2009-10-26 11:55:02 +01:00
										 |  |  |     bool startGdb(const QStringList &args = QStringList(), | 
					
						
							|  |  |  |                   const QString &gdb = QString(), | 
					
						
							|  |  |  |                   const QString &settingsIdHint = QString()); | 
					
						
							| 
									
										
										
										
											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 handleAdapterStarted(); | 
					
						
							| 
									
										
										
										
											2010-07-09 17:07:59 +02:00
										 |  |  |     void defaultInferiorShutdown(const char *cmd); | 
					
						
							| 
									
										
										
										
											2010-07-15 13:23:44 +02:00
										 |  |  |     void loadPythonDumpers(); | 
					
						
							| 
									
										
										
										
											2010-09-23 14:58:45 +02:00
										 |  |  |     void pythonDumpersFailed(); | 
					
						
							| 
									
										
										
										
											2010-07-08 18:10:50 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 12:41:26 +02:00
										 |  |  |     // Something went wrong with the adapter *before* adapterStarted() was emitted.
 | 
					
						
							|  |  |  |     // Make sure to clean up everything before emitting this signal.
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     void handleAdapterStartFailed(const QString &msg, | 
					
						
							|  |  |  |         const QString &settingsIdHint = QString()); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 12:41:26 +02:00
										 |  |  |     // This triggers the initial breakpoint synchronization and causes
 | 
					
						
							| 
									
										
										
										
											2010-07-08 18:10:50 +02:00
										 |  |  |     // finishInferiorSetup() being called once done.
 | 
					
						
							| 
									
										
										
										
											2009-10-19 19:04:01 +02:00
										 |  |  |     void handleInferiorPrepared(); | 
					
						
							| 
									
										
										
										
											2010-07-08 18:10:50 +02:00
										 |  |  |     // This notifies the base of a successful inferior setup.
 | 
					
						
							|  |  |  |     void finishInferiorSetup(); | 
					
						
							| 
									
										
										
										
											2009-10-19 19:04:01 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 12:41:26 +02:00
										 |  |  |     // The adapter is still running just fine, but it failed to acquire a debuggee.
 | 
					
						
							| 
									
										
										
										
											2010-07-09 17:07:59 +02:00
										 |  |  |     void notifyInferiorSetupFailed(const QString &msg); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void notifyAdapterShutdownOk(); | 
					
						
							|  |  |  |     void notifyAdapterShutdownFailed(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 12:41:26 +02:00
										 |  |  |     // Something went wrong with the adapter *after* adapterStarted() was emitted.
 | 
					
						
							|  |  |  |     // Make sure to clean up everything before emitting this signal.
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void handleAdapterCrashed(const QString &msg); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 12:41:26 +02:00
										 |  |  | private slots: | 
					
						
							|  |  |  |     void handleGdbFinished(int, QProcess::ExitStatus status); | 
					
						
							|  |  |  |     void handleGdbError(QProcess::ProcessError error); | 
					
						
							|  |  |  |     void readGdbStandardOutput(); | 
					
						
							|  |  |  |     void readGdbStandardError(); | 
					
						
							|  |  |  |     void readDebugeeOutput(const QByteArray &data); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-15 12:32:49 +02:00
										 |  |  |     AbstractGdbAdapter *m_gdbAdapter; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-19 12:00:01 +02:00
										 |  |  |     // Name of the convenience variable containing the last
 | 
					
						
							|  |  |  |     // known function return value.
 | 
					
						
							|  |  |  |     QByteArray m_resultVarName; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// Gdb Command Management //////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     public: // Otherwise the Qt flag macros are unhappy.
 | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |     enum GdbCommandFlag { | 
					
						
							|  |  |  |         NoFlags = 0, | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |         // The command needs a stopped inferior.
 | 
					
						
							|  |  |  |         NeedsStop = 1,  | 
					
						
							|  |  |  |         // No need to wait for the reply before continuing inferior.
 | 
					
						
							|  |  |  |         Discardable = 2, | 
					
						
							|  |  |  |         // Trigger watch model rebuild when no such commands are pending anymore.
 | 
					
						
							|  |  |  |         RebuildWatchModel = 4, | 
					
						
							| 
									
										
										
										
											2010-03-02 18:02:30 +01:00
										 |  |  |         WatchUpdate = Discardable | RebuildWatchModel, | 
					
						
							| 
									
										
										
										
											2010-06-28 14:55:19 +02:00
										 |  |  |         // We can live without receiving an answer.
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |         NonCriticalResponse = 8, | 
					
						
							|  |  |  |         // Callback expects GdbResultRunning instead of GdbResultDone.
 | 
					
						
							|  |  |  |         RunRequest = 16, | 
					
						
							|  |  |  |         // Callback expects GdbResultExit instead of GdbResultDone.
 | 
					
						
							|  |  |  |         ExitRequest = 32, | 
					
						
							|  |  |  |         // Auto-set inferior shutdown related states.
 | 
					
						
							|  |  |  |         LosesChild = 64, | 
					
						
							|  |  |  |         // Trigger breakpoint model rebuild when no such commands are pending anymore.
 | 
					
						
							|  |  |  |         RebuildBreakpointModel = 128, | 
					
						
							| 
									
										
										
										
											2010-04-09 14:53:45 +02:00
										 |  |  |         // This command needs to be send immediately.
 | 
					
						
							|  |  |  |         Immediate = 256, | 
					
						
							| 
									
										
										
										
											2010-06-28 14:53:31 +02:00
										 |  |  |         // This is a command that needs to be wrapped into -interpreter-exec console
 | 
					
						
							|  |  |  |         ConsoleCommand = 512, | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |         QByteArray command; | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |         QVariant cookie; | 
					
						
							| 
									
										
										
										
											2009-07-06 11:37:21 +02:00
										 |  |  |         QTime postTime; | 
					
						
							| 
									
										
										
										
											2009-05-04 18:30:22 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     // Type and cookie are sender-internal data, opaque for the "event
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     // 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); | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |     void postCommand(const QByteArray &command, | 
					
						
							| 
									
										
										
										
											2009-05-05 11:16:54 +02:00
										 |  |  |                      GdbCommandFlags flags, | 
					
						
							|  |  |  |                      GdbCommandCallback callback = 0, | 
					
						
							|  |  |  |                      const char *callbackName = 0, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |     void postCommand(const QByteArray &command, | 
					
						
							| 
									
										
										
										
											2009-05-05 11:16:54 +02:00
										 |  |  |                      GdbCommandCallback callback = 0, | 
					
						
							|  |  |  |                      const char *callbackName = 0, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |     void postCommand(const QByteArray &command, | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  |                      AdapterCallback callback, | 
					
						
							|  |  |  |                      const char *callbackName, | 
					
						
							|  |  |  |                      const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |     void postCommand(const QByteArray &command, | 
					
						
							| 
									
										
										
										
											2009-09-21 17:35:19 +02:00
										 |  |  |                      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-12-11 16:59:34 +01:00
										 |  |  |     int commandTimeoutTime() const; | 
					
						
							| 
									
										
										
										
											2009-11-03 14:56:27 +01:00
										 |  |  |     QTimer *m_commandTimer; | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     // This contains the first token number for the current round
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     // of evaluation. Responses with older tokens are considers
 | 
					
						
							|  |  |  |     // out of date and discarded.
 | 
					
						
							|  |  |  |     int m_oldestAcceptableToken; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-02 18:02:30 +01:00
										 |  |  |     int m_pendingWatchRequests; // Watch updating commands in flight
 | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     int m_pendingBreakpointRequests; // 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)(); | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |     // This function is called after all previous responses have been received.
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     CommandsDoneCallback m_commandsDoneCallback; | 
					
						
							| 
									
										
										
										
											2009-09-21 11:09:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QList<GdbCommand> m_commandsToRunOnTemporaryBreak; | 
					
						
							| 
									
										
										
										
											2009-12-18 16:25:59 +01:00
										 |  |  |     int gdbVersion() const { return m_gdbVersion; } | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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); | 
					
						
							| 
									
										
										
										
											2010-08-11 09:46:39 +02:00
										 |  |  |     void resetCommandQueue(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-30 07:52:41 +02:00
										 |  |  |     bool isSynchronous() const { return hasPython(); } | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     virtual bool hasPython() const; | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     bool supportsThreads() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Gdb initialization sequence
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleShowVersion(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void handleHasPython(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; | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     bool m_hasPython; | 
					
						
							| 
									
										
										
										
											2010-09-14 12:57:24 +02:00
										 |  |  |     bool m_hasInferiorThreadList; | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							| 
									
										
										
										
											2010-10-04 10:20:33 +02:00
										 |  |  |     bool acceptsBreakpoint(const Internal::BreakpointData *br); | 
					
						
							| 
									
										
										
										
											2009-01-15 14:47:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-10 16:17:40 +01:00
										 |  |  |     virtual void executeStep(); | 
					
						
							|  |  |  |     virtual void executeStepOut(); | 
					
						
							|  |  |  |     virtual void executeNext(); | 
					
						
							|  |  |  |     virtual void executeStepI(); | 
					
						
							|  |  |  |     virtual void executeNextI(); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-10 16:17:40 +01:00
										 |  |  |     virtual void executeRunToLine(const QString &fileName, int lineNumber); | 
					
						
							|  |  |  |     virtual void executeRunToFunction(const QString &functionName); | 
					
						
							|  |  |  |     virtual void executeJumpToLine(const QString &fileName, int lineNumber); | 
					
						
							|  |  |  |     virtual void executeReturn(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-10 16:17:40 +01:00
										 |  |  |     void handleExecuteContinue(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleExecuteStep(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleExecuteNext(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleExecuteReturn(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-06-30 14:18:47 +02:00
										 |  |  |     void handleExecuteJumpToLine(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-06-30 14:39:41 +02:00
										 |  |  |     void handleExecuteRunToLine(const GdbResponse &response); | 
					
						
							|  |  |  |     //void handleExecuteRunToFunction(const GdbResponse &response);
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void maybeHandleInferiorPidChanged(const QString &pid); | 
					
						
							| 
									
										
										
										
											2009-11-09 22:11:56 +01:00
										 |  |  |     void handleInfoProc(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-05 17:00:54 +02:00
										 |  |  |     QByteArray m_entryPoint; | 
					
						
							| 
									
										
										
										
											2009-10-30 17:16:56 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | private: ////////// View & Data Stuff //////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void selectThread(int index); | 
					
						
							|  |  |  |     virtual void activateFrame(int index); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2010-03-25 13:33:38 +01:00
										 |  |  |     void handleBreakDisable(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleBreakInsert1(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-03-04 15:42:09 +01:00
										 |  |  |     void handleBreakInsert2(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleBreakCondition(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleBreakInfo(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-05-07 15:16:31 +02:00
										 |  |  |     void handleWatchInsert(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-03-26 10:29:19 +01:00
										 |  |  |     void handleInfoLine(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void extractDataFromInfoBreak(const QString &output, BreakpointData *data); | 
					
						
							| 
									
										
										
										
											2010-05-10 10:33:52 +02:00
										 |  |  |     void setBreakpointDataFromOutput(BreakpointData *data, const GdbMi &bkpt); | 
					
						
							| 
									
										
										
										
											2010-04-29 18:36:18 +02:00
										 |  |  |     QByteArray breakpointLocation(const BreakpointData *data); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  |     void sendInsertBreakpoint(int index); | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     QString breakLocation(const QString &file) const; | 
					
						
							| 
									
										
										
										
											2009-12-09 11:13:20 +01:00
										 |  |  |     void reloadBreakListInternal(); | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							| 
									
										
										
										
											2010-05-03 19:12:52 +02:00
										 |  |  |     virtual void requestModuleSymbols(const QString &moduleName); | 
					
						
							| 
									
										
										
										
											2009-10-28 21:33:41 +01:00
										 |  |  |     virtual void reloadModules(); | 
					
						
							| 
									
										
										
										
											2010-07-22 16:53:01 +02:00
										 |  |  |     virtual void examineModules(); | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-02 17:25:14 +01:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Snapshot specific stuff
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-07-21 09:42:33 +02:00
										 |  |  |     virtual void createSnapshot(); | 
					
						
							| 
									
										
										
										
											2010-02-02 17:25:14 +01:00
										 |  |  |     void handleMakeSnapshot(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-02-01 16:14:57 +01:00
										 |  |  |     virtual void fetchDisassembler(DisassemblerViewAgent *agent); | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  |     void fetchDisassemblerByAddress(const DisassemblerAgentCookie &ac, | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |         bool useMixedMode); | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  |     void fetchDisassemblerByCli(const DisassemblerAgentCookie &ac, | 
					
						
							| 
									
										
										
										
											2010-02-09 15:02:55 +01:00
										 |  |  |         bool useMixedMode); | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  |     void fetchDisassemblerByAddressCli(const DisassemblerAgentCookie &ac); | 
					
						
							| 
									
										
										
										
											2010-02-09 15:02:55 +01:00
										 |  |  |     void handleFetchDisassemblerByCli(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     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
										 |  |  |     QString cleanupFullName(const QString &fileName); | 
					
						
							| 
									
										
										
										
											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-12-09 11:13:20 +01:00
										 |  |  |     void invalidateSourcesList(); | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     bool m_sourcesListOutdated; | 
					
						
							|  |  |  |     bool m_sourcesListUpdating; | 
					
						
							| 
									
										
										
										
											2009-12-09 11:13:20 +01:00
										 |  |  |     bool m_breakListOutdated; | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |         void updateAllClassic(); | 
					
						
							|  |  |  |         void updateAllPython(); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleStackListFrames(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleStackSelectThread(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-03-10 17:39:08 +01:00
										 |  |  |     void handleStackSelectFrame(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-05-17 17:38:31 +02:00
										 |  |  |     void handleThreadListIds(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleThreadInfo(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-09-13 12:37:30 +02:00
										 |  |  |     void handleThreadNames(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
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-02-11 13:21:38 +01:00
										 |  |  |     virtual void setToolTipExpression(const QPoint &mousePos, | 
					
						
							|  |  |  |         TextEditor::ITextEditor *editor, int cursorPos); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-23 13:22:08 +02:00
										 |  |  |     virtual void assignValueInDebugger(const Internal::WatchData *w, const QString &expr, const QVariant &value); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-17 17:33:42 +01:00
										 |  |  |     virtual void fetchMemory(MemoryViewAgent *agent, QObject *token, | 
					
						
							|  |  |  |         quint64 addr, quint64 length); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     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
 | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void updateSubItemClassic(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-13 08:32:12 +02:00
										 |  |  |     void virtual updateWatchData(const WatchData &data, const WatchUpdateFlags &flags); | 
					
						
							| 
									
										
										
										
											2009-08-31 09:14:04 +02:00
										 |  |  |     Q_SLOT void updateWatchDataHelper(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2010-03-02 18:02:30 +01:00
										 |  |  |     void rebuildWatchModel(); | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void createGdbVariableClassic(const WatchData &data); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void runDebuggingHelperClassic(const WatchData &data, bool dumpChildren); | 
					
						
							|  |  |  |     void runDirectDebuggingHelperClassic(const WatchData &data, bool dumpChildren); | 
					
						
							| 
									
										
										
										
											2010-09-01 17:36:09 +02:00
										 |  |  |     bool hasDebuggingHelperForType(const QByteArray &type) const; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-21 16:08:59 +01:00
										 |  |  |     void handleVarListChildrenClassic(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleVarListChildrenHelperClassic(const GdbMi &child, | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |         const WatchData &parent); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleVarCreate(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleVarAssign(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-01-21 16:08:59 +01:00
										 |  |  |     void handleEvaluateExpressionClassic(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void handleQueryDebuggingHelperClassic(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperValue2Classic(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperValue3Classic(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleDebuggingHelperEditValue(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleDebuggingHelperSetup(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-05-20 16:34:08 +02:00
										 |  |  |     void handleDebuggingHelperVersionCheckClassic(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-07-12 15:39:22 +02:00
										 |  |  |     void handleDetach(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-29 18:44:02 +02:00
										 |  |  |     Q_SLOT void createFullBacktrace(); | 
					
						
							|  |  |  |     void handleCreateFullBacktrace(const GdbResponse &response); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void updateLocals(const QVariant &cookie = QVariant()); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |         void updateLocalsClassic(const QVariant &cookie); | 
					
						
							| 
									
										
										
										
											2010-09-13 08:32:12 +02:00
										 |  |  |         void updateLocalsPython(bool tryPartial, const QByteArray &varList); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |             void handleStackFramePython(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-01-29 22:49:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void handleStackListLocalsClassic(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleStackListLocalsPython(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); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void handleStackListArgumentsClassic(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-05 16:51:55 +01:00
										 |  |  |     QSet<QByteArray> m_processedNames; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-16 11:08:54 +02:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Dumper Management
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-09-23 14:58:45 +02:00
										 |  |  |     bool checkDebuggingHelpersClassic(); | 
					
						
							| 
									
										
										
										
											2010-01-20 15:38:01 +01:00
										 |  |  |     void setDebuggingHelperStateClassic(DebuggingHelperState); | 
					
						
							|  |  |  |     void tryLoadDebuggingHelpersClassic(); | 
					
						
							|  |  |  |     void tryQueryDebuggingHelpersClassic(); | 
					
						
							|  |  |  |     Q_SLOT void setDebugDebuggingHelpersClassic(const QVariant &on); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     Q_SLOT void setUseDebuggingHelpers(const QVariant &on); | 
					
						
							| 
									
										
										
										
											2009-09-22 10:50:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     DebuggingHelperState m_debuggingHelperState; | 
					
						
							|  |  |  |     QtDumperHelper m_dumperHelper; | 
					
						
							| 
									
										
										
										
											2010-04-08 16:55:25 +02:00
										 |  |  |     QString m_gdb; | 
					
						
							| 
									
										
										
										
											2009-10-05 14:59:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-16 11:08:54 +02:00
										 |  |  |     // 
 | 
					
						
							|  |  |  |     // Convenience Functions
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-07 17:37:15 +02:00
										 |  |  |     QString errorMessage(QProcess::ProcessError error); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QMainWindow *mainWindow() const; | 
					
						
							| 
									
										
										
										
											2010-05-05 12:49:08 +02:00
										 |  |  |     AbstractGdbProcess *gdbProc() const; | 
					
						
							| 
									
										
										
										
											2010-07-09 17:07:59 +02:00
										 |  |  |     void showExecutionError(const QString &message); | 
					
						
							| 
									
										
										
										
											2010-01-14 15:25:53 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-15 19:02:12 +02:00
										 |  |  |     void removeTooltip(); | 
					
						
							| 
									
										
										
										
											2010-07-07 16:30:42 +02:00
										 |  |  |     static QByteArray tooltipIName(const QString &exp); | 
					
						
							| 
									
										
										
										
											2010-09-15 19:02:12 +02:00
										 |  |  |     QString m_toolTipExpression; | 
					
						
							|  |  |  |     QPoint m_toolTipPos; | 
					
						
							| 
									
										
										
										
											2010-06-30 14:39:41 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // HACK:
 | 
					
						
							|  |  |  |     StackFrame m_targetFrame; | 
					
						
							| 
									
										
										
										
											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
 |