Files
qt-creator/src/plugins/debugger/qml/qmlcppengine.h
Friedemann Kleint 13c97d652e Debugger: Fixes around watch editing.
assignValueInDebugger: Pass on WatchData as well, pass
on values as QVariant. Based on that, do more extensive
checks in CDB, preventing assignment of non-PODs.

Locals/Watch editing:
* Disable while running
* Edit pointer values as hex with validation.

CDB: Strip class types off reported pointer values and reformat
the values as short 0x-pointer values, introduce flag to
WatchData::source to do dumper expansion handling.

Windows: recognize int64 as int.

Register handler: Fix accessing uninitialized value.
2010-09-23 13:22:08 +02:00

120 lines
3.7 KiB
C++

#ifndef QMLGDBENGINE_H
#define QMLGDBENGINE_H
#include "debuggerengine.h"
#include <QtCore/QScopedPointer>
namespace Core {
class IEditor;
}
namespace Debugger {
struct QmlCppEnginePrivate;
class DEBUGGER_EXPORT QmlCppEngine : public DebuggerEngine
{
Q_OBJECT
public:
explicit QmlCppEngine(const DebuggerStartParameters &sp);
virtual ~QmlCppEngine();
void setActiveEngine(DebuggerLanguage language);
virtual void setToolTipExpression(const QPoint & /* mousePos */,
TextEditor::ITextEditor * /* editor */, int /* cursorPos */);
virtual void updateWatchData(const Internal::WatchData & /* data */, const Internal::WatchUpdateFlags &flags);
virtual void watchPoint(const QPoint &);
virtual void fetchMemory(Internal::MemoryViewAgent *, QObject *,
quint64 addr, quint64 length);
virtual void fetchDisassembler(Internal::DisassemblerViewAgent *);
virtual void activateFrame(int index);
virtual void reloadModules();
virtual void examineModules();
virtual void loadSymbols(const QString &moduleName);
virtual void loadAllSymbols();
virtual void requestModuleSymbols(const QString &moduleName);
virtual void reloadRegisters();
virtual void reloadSourceFiles();
virtual void reloadFullStack();
virtual void setRegisterValue(int regnr, const QString &value);
virtual unsigned debuggerCapabilities() const;
virtual bool isSynchronous() const;
virtual QByteArray qtNamespace() const;
virtual void createSnapshot();
virtual void updateAll();
virtual void attemptBreakpointSynchronization();
virtual void selectThread(int index);
virtual void assignValueInDebugger(const Internal::WatchData *w, const QString &expr, const QVariant &value);
QAbstractItemModel *commandModel() const;
QAbstractItemModel *modulesModel() const;
QAbstractItemModel *breakModel() const;
QAbstractItemModel *registerModel() const;
QAbstractItemModel *stackModel() const;
QAbstractItemModel *threadsModel() const;
QAbstractItemModel *localsModel() const;
QAbstractItemModel *watchersModel() const;
QAbstractItemModel *returnModel() const;
QAbstractItemModel *sourceFilesModel() const;
DebuggerEngine *cppEngine() const;
protected:
virtual void detachDebugger();
virtual void executeStep();
virtual void executeStepOut();
virtual void executeNext();
virtual void executeStepI();
virtual void executeNextI();
virtual void executeReturn();
virtual void continueInferior();
virtual void interruptInferior();
virtual void requestInterruptInferior();
virtual void executeRunToLine(const QString &fileName, int lineNumber);
virtual void executeRunToFunction(const QString &functionName);
virtual void executeJumpToLine(const QString &fileName, int lineNumber);
virtual void executeDebuggerCommand(const QString &command);
virtual void frameUp();
virtual void frameDown();
virtual void notifyInferiorRunOk();
protected:
virtual void setupEngine();
virtual void setupInferior();
virtual void runEngine();
virtual void shutdownInferior();
virtual void shutdownEngine();
private slots:
void masterEngineStateChanged(const DebuggerState &state);
void slaveEngineStateChanged(const DebuggerState &state);
void setupSlaveEngine();
void editorChanged(Core::IEditor *editor);
private:
void setupSlaveEngineOnTimer();
void finishDebugger();
void handleSlaveEngineStateChange(const DebuggerState &newState);
void handleSlaveEngineStateChangeAsActive(const DebuggerState &newState);
private:
QScopedPointer<QmlCppEnginePrivate> d;
};
} // namespace Debugger
#endif // QMLGDBENGINE_H