| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-01-11 16:28:15 +01:00
										 |  |  | ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** Contact: Nokia Corporation (info@qt.nokia.com) | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											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
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** 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
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** rights. These rights are described in the Nokia Qt LGPL Exception | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-04-13 08:42:33 +02:00
										 |  |  | ** Other Usage | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Alternatively, this file may be used in accordance with the terms and | 
					
						
							|  |  |  | ** conditions contained in a signed written agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** If you have questions regarding the use of this file, please contact | 
					
						
							| 
									
										
										
										
											2011-05-06 15:05:37 +02:00
										 |  |  | ** Nokia at info@qt.nokia.com. | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-02-25 09:15:00 +01:00
										 |  |  | **************************************************************************/ | 
					
						
							| 
									
										
										
										
											2008-12-02 15:08:31 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #ifndef DEBUGGER_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>
 | 
					
						
							| 
									
										
										
										
											2010-11-16 12:42:57 +01:00
										 |  |  | #include <QtCore/QTimer>
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #include <QtCore/QVariant>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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; | 
					
						
							| 
									
										
										
										
											2011-02-11 15:00:13 +01:00
										 |  |  | class GdbToolTipContext; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-23 15:28:50 +02:00
										 |  |  | class WatchData; | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  | class DisassemblerAgentCookie; | 
					
						
							| 
									
										
										
										
											2010-11-24 15:55:09 +01:00
										 |  |  | class DisassemblerLines; | 
					
						
							| 
									
										
										
										
											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 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, | 
					
						
							| 
									
										
										
										
											2010-12-16 12:05:48 +01:00
										 |  |  |     DebuggingHelperUnavailable | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-12 12:01:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-06 18:17:51 +02:00
										 |  |  | enum GdbTestCase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     GdbTestNoBoundsOfCurrentFunction = 1 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-26 16:35:36 +02:00
										 |  |  | class UpdateParameters | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     UpdateParameters() { tryPartial = tooltipOnly = false; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool tryPartial; | 
					
						
							|  |  |  |     bool tooltipOnly; | 
					
						
							|  |  |  |     QByteArray varList; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-08 15:24:23 +02:00
										 |  |  | /* This is only used with Mac gdb since 2.2
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * "Custom dumper" is a library compiled against the current | 
					
						
							|  |  |  |  * Qt containing functions to evaluate values of Qt classes | 
					
						
							|  |  |  |  * (such as QString, taking pointers to their addresses). | 
					
						
							|  |  |  |  * The library must be loaded into the debuggee. | 
					
						
							|  |  |  |  * It provides a function that takes input from an input buffer | 
					
						
							|  |  |  |  * and some parameters and writes output into an output buffer. | 
					
						
							|  |  |  |  * Parameter 1 is the protocol: | 
					
						
							|  |  |  |  * 1) Query. Fills output buffer with known types, Qt version and namespace. | 
					
						
							|  |  |  |  *    This information is parsed and stored by this class (special type | 
					
						
							|  |  |  |  *    enumeration). | 
					
						
							|  |  |  |  * 2) Evaluate symbol, taking address and some additional parameters | 
					
						
							|  |  |  |  *    depending on type. */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class DumperHelper | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     enum Type { | 
					
						
							|  |  |  |         UnknownType, | 
					
						
							|  |  |  |         SupportedType, // A type that requires no special handling by the dumper
 | 
					
						
							|  |  |  |         // Below types require special handling
 | 
					
						
							|  |  |  |         QAbstractItemType, | 
					
						
							|  |  |  |         QObjectType, QWidgetType, QObjectSlotType, QObjectSignalType, | 
					
						
							|  |  |  |         QVectorType, QMapType, QMultiMapType, QMapNodeType, QStackType, | 
					
						
							|  |  |  |         StdVectorType, StdDequeType, StdSetType, StdMapType, StdStackType, | 
					
						
							|  |  |  |         StdStringType | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Type/Parameter struct required for building a value query
 | 
					
						
							|  |  |  |     struct TypeData { | 
					
						
							|  |  |  |         TypeData(); | 
					
						
							|  |  |  |         void clear(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Type type; | 
					
						
							|  |  |  |         bool isTemplate; | 
					
						
							|  |  |  |         QByteArray tmplate; | 
					
						
							|  |  |  |         QByteArray inner; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     DumperHelper(); | 
					
						
							|  |  |  |     void clear(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     double dumperVersion() const { return m_dumperVersion; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int typeCount() const; | 
					
						
							|  |  |  |     // Look up a simple, non-template  type
 | 
					
						
							|  |  |  |     Type simpleType(const QByteArray &simpleType) const; | 
					
						
							|  |  |  |     // Look up a (potentially) template type and fill parameter struct
 | 
					
						
							|  |  |  |     TypeData typeData(const QByteArray &typeName) const; | 
					
						
							|  |  |  |     Type type(const QByteArray &typeName) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int qtVersion() const; | 
					
						
							|  |  |  |     QByteArray qtVersionString() const; | 
					
						
							|  |  |  |     QByteArray qtNamespace() const; | 
					
						
							|  |  |  |     void setQtNamespace(const QByteArray &ba) | 
					
						
							|  |  |  |         { if (!ba.isEmpty()) m_qtNamespace = ba; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Complete parse of "query" (protocol 1) response from debuggee buffer.
 | 
					
						
							|  |  |  |     // 'data' excludes the leading indicator character.
 | 
					
						
							|  |  |  |     bool parseQuery(const GdbMi &data); | 
					
						
							|  |  |  |     // Sizes can be added as the debugger determines them
 | 
					
						
							|  |  |  |     void addSize(const QByteArray &type, int size); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Determine the parameters required for an "evaluate" (protocol 2) call
 | 
					
						
							|  |  |  |     void evaluationParameters(const WatchData &data, | 
					
						
							|  |  |  |                               const TypeData &td, | 
					
						
							|  |  |  |                               QByteArray *inBuffer, | 
					
						
							|  |  |  |                               QList<QByteArray> *extraParameters) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QString toString(bool debug = false) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     static QString msgDumperOutdated(double requiredVersion, double currentVersion); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     typedef QMap<QString, Type> NameTypeMap; | 
					
						
							|  |  |  |     typedef QMap<QByteArray, int> SizeCache; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Look up a simple (namespace) type
 | 
					
						
							|  |  |  |     QByteArray evaluationSizeofTypeExpression(const QByteArray &typeName) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     NameTypeMap m_nameTypeMap; | 
					
						
							|  |  |  |     SizeCache m_sizeCache; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // The initial dumper query function returns sizes of some special
 | 
					
						
							|  |  |  |     // types to aid CDB since it cannot determine the size of classes.
 | 
					
						
							|  |  |  |     // They are not complete (std::allocator<X>).
 | 
					
						
							|  |  |  |     enum SpecialSizeType { IntSize, PointerSize, StdAllocatorSize, | 
					
						
							|  |  |  |                            QSharedPointerSize, QSharedDataPointerSize, | 
					
						
							|  |  |  |                            QWeakPointerSize, QPointerSize, | 
					
						
							|  |  |  |                            QListSize, QLinkedListSize, QVectorSize, QQueueSize, | 
					
						
							|  |  |  |                            SpecialSizeCount }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Resolve name to enumeration or SpecialSizeCount (invalid)
 | 
					
						
							|  |  |  |     SpecialSizeType specialSizeType(const QByteArray &type) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int m_specialSizes[SpecialSizeCount]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     typedef QMap<QByteArray, QByteArray> ExpressionCache; | 
					
						
							|  |  |  |     ExpressionCache m_expressionCache; | 
					
						
							|  |  |  |     int m_qtVersion; | 
					
						
							|  |  |  |     double m_dumperVersion; | 
					
						
							|  |  |  |     QByteArray m_qtNamespace; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void setQClassPrefixes(const QByteArray &qNamespace); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QByteArray m_qPointerPrefix; | 
					
						
							|  |  |  |     QByteArray m_qSharedPointerPrefix; | 
					
						
							|  |  |  |     QByteArray m_qSharedDataPointerPrefix; | 
					
						
							|  |  |  |     QByteArray m_qWeakPointerPrefix; | 
					
						
							|  |  |  |     QByteArray m_qListPrefix; | 
					
						
							|  |  |  |     QByteArray m_qLinkedListPrefix; | 
					
						
							|  |  |  |     QByteArray m_qVectorPrefix; | 
					
						
							|  |  |  |     QByteArray m_qQueuePrefix; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-14 08:34:07 +02:00
										 |  |  | class GdbEngine : public Debugger::DebuggerEngine | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2011-01-12 12:10:12 +01:00
										 |  |  |     GdbEngine(const DebuggerStartParameters &startParameters, | 
					
						
							|  |  |  |         DebuggerEngine *masterEngine); | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-02-07 14:26:34 +01:00
										 |  |  |     friend class CodaGdbAdapter; | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-02-28 10:58:21 +01:00
										 |  |  |     virtual bool canWatchWidgets() 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-16 12:41:06 +01:00
										 |  |  |     virtual bool acceptsDebuggerCommands() const; | 
					
						
							| 
									
										
										
										
											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(); } | 
					
						
							| 
									
										
										
										
											2011-01-17 15:11:11 +01:00
										 |  |  |     virtual void setQtNamespace(const QByteArray &ns) | 
					
						
							|  |  |  |         { return m_dumperHelper.setQtNamespace(ns); } | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     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 &settingsIdHint = QString()); | 
					
						
							| 
									
										
										
										
											2009-10-20 11:02:16 +02:00
										 |  |  |     void handleInferiorShutdown(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleGdbExit(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-12-10 12:41:44 +01:00
										 |  |  |     void handleRemoteSetupDone(int gdbServerPort, int qmlPort); | 
					
						
							|  |  |  |     void handleRemoteSetupFailed(const QString &message); | 
					
						
							| 
									
										
										
										
											2011-03-21 15:04:31 +01:00
										 |  |  |     void handleNamespaceExtraction(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-10-20 11:02:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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.
 | 
					
						
							| 
									
										
										
										
											2010-12-16 12:05:48 +01:00
										 |  |  |         NeedsStop = 1, | 
					
						
							| 
									
										
										
										
											2010-03-03 18:08:18 +01:00
										 |  |  |         // 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
 | 
					
						
							| 
									
										
										
										
											2010-12-16 12:05:48 +01:00
										 |  |  |         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(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-06 18:17:51 +02:00
										 |  |  |     // Sets up an "unexpected result" for the following commeand.
 | 
					
						
							|  |  |  |     void scheduleTestResponse(int testCase, const QByteArray &response); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     QHash<int, GdbCommand> m_cookieForToken; | 
					
						
							| 
									
										
										
										
											2009-12-11 16:59:34 +01:00
										 |  |  |     int commandTimeoutTime() const; | 
					
						
							| 
									
										
										
										
											2010-11-16 12:42:57 +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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-06-06 18:17:51 +02:00
										 |  |  |     Q_SLOT 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); | 
					
						
							| 
									
										
										
										
											2010-11-23 12:31:47 +01:00
										 |  |  |     void handleStop0(const GdbMi &data); | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2010-12-17 13:07:17 +01:00
										 |  |  |     Q_SLOT void handleStop2(); | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2011-06-15 14:02:26 +02:00
										 |  |  |     void handleListFeatures(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; | 
					
						
							| 
									
										
										
										
											2011-06-07 17:28:45 +02:00
										 |  |  |     bool m_hasBreakpointNotifications; | 
					
						
							| 
									
										
										
										
											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.
 | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     bool stateAcceptsBreakpointChanges() const; | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     bool acceptsBreakpoint(BreakpointModelId id) const; | 
					
						
							|  |  |  |     void insertBreakpoint(BreakpointModelId id); | 
					
						
							|  |  |  |     void removeBreakpoint(BreakpointModelId id); | 
					
						
							|  |  |  |     void changeBreakpoint(BreakpointModelId id); | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     void executeStep(); | 
					
						
							|  |  |  |     void executeStepOut(); | 
					
						
							|  |  |  |     void executeNext(); | 
					
						
							|  |  |  |     void executeStepI(); | 
					
						
							|  |  |  |     void executeNextI(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void continueInferiorInternal(); | 
					
						
							| 
									
										
										
										
											2011-02-11 15:00:13 +01:00
										 |  |  |     void doNotifyInferiorRunOk(); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  |     void autoContinueInferior(); | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     void continueInferior(); | 
					
						
							|  |  |  |     void interruptInferior(); | 
					
						
							| 
									
										
										
										
											2009-11-02 16:59:57 +01:00
										 |  |  |     void interruptInferiorTemporarily(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-23 10:16:11 +01:00
										 |  |  |     void executeRunToLine(const ContextData &data); | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     void executeRunToFunction(const QString &functionName); | 
					
						
							| 
									
										
										
										
											2011-02-23 10:16:11 +01:00
										 |  |  |     void executeJumpToLine(const ContextData &data); | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     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); | 
					
						
							| 
									
										
										
										
											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 //////////
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     void selectThread(int index); | 
					
						
							|  |  |  |     void activateFrame(int index); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2011-06-24 19:02:12 +02:00
										 |  |  |     void handleBreakModifications(const GdbMi &bkpts); | 
					
						
							| 
									
										
										
										
											2011-03-02 13:37:29 +01:00
										 |  |  |     void handleBreakListMultiple(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							| 
									
										
										
										
											2010-11-15 16:22:51 +01:00
										 |  |  |     void handleBreakEnable(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); | 
					
						
							| 
									
										
										
										
											2010-12-16 17:58:43 +01:00
										 |  |  |     void handleTraceInsert2(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2009-09-24 11:16:00 +02:00
										 |  |  |     void handleBreakCondition(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-11-30 12:47:53 +01:00
										 |  |  |     void handleBreakThreadSpec(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-05-07 15:16:31 +02:00
										 |  |  |     void handleWatchInsert(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2011-03-04 19:26:11 +01:00
										 |  |  |     void handleCatchInsert(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2010-03-26 10:29:19 +01:00
										 |  |  |     void handleInfoLine(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     void extractDataFromInfoBreak(const QString &output, BreakpointModelId); | 
					
						
							| 
									
										
										
										
											2011-06-15 14:02:26 +02:00
										 |  |  |     void updateResponse(BreakpointResponse &response, const GdbMi &bkpt); | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     QByteArray breakpointLocation(BreakpointModelId id); // For gdb/MI.
 | 
					
						
							|  |  |  |     QByteArray breakpointLocation2(BreakpointModelId id); // For gdb/CLI fallback.
 | 
					
						
							| 
									
										
										
										
											2009-10-22 22:54:30 +02:00
										 |  |  |     QString breakLocation(const QString &file) const; | 
					
						
							| 
									
										
										
										
											2009-12-09 11:13:20 +01:00
										 |  |  |     void reloadBreakListInternal(); | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     void attemptAdjustBreakpointLocation(BreakpointModelId id); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //
 | 
					
						
							|  |  |  |     // Modules specific stuff
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     void loadSymbols(const QString &moduleName); | 
					
						
							|  |  |  |     void loadAllSymbols(); | 
					
						
							| 
									
										
										
										
											2010-12-21 13:34:59 +01:00
										 |  |  |     void loadSymbolsForStack(); | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     void requestModuleSymbols(const QString &moduleName); | 
					
						
							|  |  |  |     void reloadModules(); | 
					
						
							|  |  |  |     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); | 
					
						
							| 
									
										
										
										
											2010-11-26 09:58:34 +01:00
										 |  |  |     void handleShowModuleSymbols(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
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     Q_SLOT void reloadRegisters(); | 
					
						
							|  |  |  |     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
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2011-02-10 13:43:02 +01:00
										 |  |  |     // Chain of fallbacks: PointMixed -> PointPlain -> RangeMixed -> RangePlain.
 | 
					
						
							|  |  |  |     // The Mi versions are not used right now.
 | 
					
						
							| 
									
										
										
										
											2010-12-14 12:29:32 +01:00
										 |  |  |     void fetchDisassembler(DisassemblerAgent *agent); | 
					
						
							| 
									
										
										
										
											2011-02-10 13:43:02 +01:00
										 |  |  |     void fetchDisassemblerByCliPointMixed(const DisassemblerAgentCookie &ac); | 
					
						
							|  |  |  |     void fetchDisassemblerByCliPointPlain(const DisassemblerAgentCookie &ac); | 
					
						
							|  |  |  |     void fetchDisassemblerByCliRangeMixed(const DisassemblerAgentCookie &ac); | 
					
						
							|  |  |  |     void fetchDisassemblerByCliRangePlain(const DisassemblerAgentCookie &ac); | 
					
						
							|  |  |  |     //void fetchDisassemblerByMiPointMixed(const DisassemblerAgentCookie &ac);
 | 
					
						
							|  |  |  |     //void fetchDisassemblerByMiPointPlain(const DisassemblerAgentCookie &ac);
 | 
					
						
							|  |  |  |     //void fetchDisassemblerByMiRangeMixed(const DisassemblerAgentCookie &ac);
 | 
					
						
							|  |  |  |     //void fetchDisassemblerByMiRangePlain(const DisassemblerAgentCookie &ac);
 | 
					
						
							|  |  |  |     void handleFetchDisassemblerByCliPointMixed(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByCliPointPlain(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByCliRangeMixed(const GdbResponse &response); | 
					
						
							|  |  |  |     void handleFetchDisassemblerByCliRangePlain(const GdbResponse &response); | 
					
						
							|  |  |  |     //void handleFetchDisassemblerByMiPointMixed(const GdbResponse &response);
 | 
					
						
							|  |  |  |     //void handleFetchDisassemblerByMiPointPlain(const GdbResponse &response);
 | 
					
						
							|  |  |  |     //void handleFetchDisassemblerByMiRangeMixed(const GdbResponse &response);
 | 
					
						
							|  |  |  |     //void handleFetchDisassemblerByMiRangePlain(const GdbResponse &response);
 | 
					
						
							|  |  |  |     void handleDisassemblerCheck(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2011-03-21 15:04:31 +01:00
										 |  |  |     void handleBreakOnQFatal(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2011-02-10 13:43:02 +01:00
										 |  |  |     DisassemblerLines parseDisassembler(const GdbMi &data); | 
					
						
							|  |  |  |     DisassemblerLines parseCliDisassembler(const GdbMi &lines); | 
					
						
							|  |  |  |     DisassemblerLines parseMiDisassembler(const GdbMi &lines); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool m_disassembleUsesComma; | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-17 14:08:49 +01:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Source file specific stuff
 | 
					
						
							| 
									
										
										
										
											2009-09-24 11:45:08 +02:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-11-10 16:33:11 +01:00
										 |  |  |     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; | 
					
						
							| 
									
										
										
										
											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
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2011-02-17 10:08:57 +01:00
										 |  |  |     virtual bool setToolTipExpression(const QPoint &mousePos, | 
					
						
							| 
									
										
										
										
											2011-02-11 15:00:13 +01:00
										 |  |  |         TextEditor::ITextEditor *editor, const DebuggerToolTipContext &); | 
					
						
							| 
									
										
										
										
											2010-11-18 13:38:58 +01:00
										 |  |  |     virtual void assignValueInDebugger(const WatchData *data, | 
					
						
							|  |  |  |         const QString &expr, const QVariant &value); | 
					
						
							| 
									
										
										
										
											2009-10-15 12:32:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-14 12:29:32 +01:00
										 |  |  |     virtual void fetchMemory(MemoryAgent *agent, QObject *token, | 
					
						
							| 
									
										
										
										
											2010-02-17 17:33:42 +01:00
										 |  |  |         quint64 addr, quint64 length); | 
					
						
							| 
									
										
										
										
											2011-02-25 13:21:54 +01:00
										 |  |  |     void handleChangeMemory(const GdbResponse &response); | 
					
						
							|  |  |  |     virtual void changeMemory(MemoryAgent *agent, QObject *token, | 
					
						
							|  |  |  |         quint64 addr, const QByteArray &data); | 
					
						
							| 
									
										
										
										
											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, | 
					
						
							| 
									
										
										
										
											2011-02-08 18:27:40 +01:00
										 |  |  |         const WatchData &parent, int sortId); | 
					
						
							| 
									
										
										
										
											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); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-26 15:13:37 +02:00
										 |  |  |     void updateLocals(); | 
					
						
							|  |  |  |         void updateLocalsClassic(); | 
					
						
							| 
									
										
										
										
											2011-05-26 16:35:36 +02:00
										 |  |  |         void updateLocalsPython(const UpdateParameters ¶meters); | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-04-12 15:56:03 +02:00
										 |  |  |     struct TypeInfo | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         TypeInfo(uint s = 0) : size(s) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         uint size; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QHash<QByteArray, TypeInfo> m_typeInfoCache; | 
					
						
							| 
									
										
										
										
											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(); | 
					
						
							| 
									
										
										
										
											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; | 
					
						
							| 
									
										
										
										
											2011-04-08 15:24:23 +02:00
										 |  |  |     DumperHelper m_dumperHelper; | 
					
						
							| 
									
										
										
										
											2010-04-08 16:55:25 +02:00
										 |  |  |     QString m_gdb; | 
					
						
							| 
									
										
										
										
											2009-10-05 14:59:39 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-16 12:05:48 +01:00
										 |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2010-06-16 11:08:54 +02:00
										 |  |  |     // Convenience Functions
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2009-10-07 17:37:15 +02:00
										 |  |  |     QString errorMessage(QProcess::ProcessError error); | 
					
						
							| 
									
										
										
										
											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-07-07 16:30:42 +02:00
										 |  |  |     static QByteArray tooltipIName(const QString &exp); | 
					
						
							| 
									
										
										
										
											2011-02-11 15:00:13 +01:00
										 |  |  |     QString tooltipExpression() const; | 
					
						
							|  |  |  |     void clearToolTip(); | 
					
						
							|  |  |  |     QScopedPointer<GdbToolTipContext> m_toolTipContext; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-30 14:39:41 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-17 13:07:17 +01:00
										 |  |  |     // For short-circuiting stack and thread list evaluation.
 | 
					
						
							|  |  |  |     bool m_stackNeeded; | 
					
						
							|  |  |  |     int m_currentThreadId; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-19 10:48:39 +01:00
										 |  |  |     //
 | 
					
						
							|  |  |  |     // Qml
 | 
					
						
							|  |  |  |     //
 | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     BreakpointResponseId m_qmlBreakpointResponseId1; | 
					
						
							|  |  |  |     BreakpointResponseId m_qmlBreakpointResponseId2; | 
					
						
							| 
									
										
										
										
											2011-01-19 10:48:39 +01:00
										 |  |  |     bool m_preparedForQmlBreak; | 
					
						
							| 
									
										
										
										
											2011-01-19 14:34:25 +01:00
										 |  |  |     bool setupQmlStep(bool on); | 
					
						
							|  |  |  |     void handleSetQmlStepBreakpoint(const GdbResponse &response); | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     bool isQmlStepBreakpoint(const BreakpointResponseId &id) const; | 
					
						
							|  |  |  |     bool isQmlStepBreakpoint1(const BreakpointResponseId &id) const; | 
					
						
							|  |  |  |     bool isQmlStepBreakpoint2(const BreakpointResponseId &id) const; | 
					
						
							|  |  |  |     bool isQFatalBreakpoint(const BreakpointResponseId &id) const; | 
					
						
							|  |  |  |     bool isHiddenBreakpoint(const BreakpointResponseId &id) const; | 
					
						
							| 
									
										
										
										
											2011-01-19 10:48:39 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-06-30 14:39:41 +02:00
										 |  |  |     // HACK:
 | 
					
						
							| 
									
										
										
										
											2010-12-20 16:28:26 +01:00
										 |  |  |     QByteArray m_currentThread; | 
					
						
							| 
									
										
										
										
											2011-01-21 16:42:57 +01:00
										 |  |  |     QString m_lastWinException; | 
					
						
							| 
									
										
										
										
											2011-06-24 16:25:30 +02:00
										 |  |  |     BreakpointResponseId m_qFatalBreakpointResponseId; | 
					
						
							| 
									
										
										
										
											2011-05-25 08:58:25 +02:00
										 |  |  |     bool m_actingOnExpectedStop; | 
					
						
							| 
									
										
										
										
											2011-06-06 18:17:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     QHash<int, QByteArray> m_scheduledTestResponses; | 
					
						
							|  |  |  |     QSet<int> m_testCases; | 
					
						
							| 
									
										
										
										
											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
 |