forked from qt-creator/qt-creator
debugger: make memory view updatable
Task-number: QTCREATORBUG-3242
This commit is contained in:
@@ -84,6 +84,7 @@ namespace Internal {
|
|||||||
|
|
||||||
const char * const OPENED_BY_DEBUGGER = "OpenedByDebugger";
|
const char * const OPENED_BY_DEBUGGER = "OpenedByDebugger";
|
||||||
const char * const OPENED_WITH_DISASSEMBLY = "DisassemblerView";
|
const char * const OPENED_WITH_DISASSEMBLY = "DisassemblerView";
|
||||||
|
const char * const OPENED_WITH_MEMORY = "MemoryView";
|
||||||
|
|
||||||
const char * const DEBUGMODE = "Debugger.DebugMode";
|
const char * const DEBUGMODE = "Debugger.DebugMode";
|
||||||
const char * const DEBUG = "Debugger.Debug";
|
const char * const DEBUG = "Debugger.Debug";
|
||||||
|
|||||||
@@ -114,6 +114,7 @@ public:
|
|||||||
virtual void showModuleSymbols(const QString &moduleName,
|
virtual void showModuleSymbols(const QString &moduleName,
|
||||||
const QVector<Symbol> &symbols) = 0;
|
const QVector<Symbol> &symbols) = 0;
|
||||||
virtual void openMemoryEditor() = 0;
|
virtual void openMemoryEditor() = 0;
|
||||||
|
virtual void updateMemoryEditors() = 0;
|
||||||
virtual void languagesChanged() = 0;
|
virtual void languagesChanged() = 0;
|
||||||
|
|
||||||
virtual Utils::SavedAction *action(int code) const = 0;
|
virtual Utils::SavedAction *action(int code) const = 0;
|
||||||
|
|||||||
@@ -1027,6 +1027,7 @@ public slots:
|
|||||||
void languagesChanged();
|
void languagesChanged();
|
||||||
void showStatusMessage(const QString &msg, int timeout = -1);
|
void showStatusMessage(const QString &msg, int timeout = -1);
|
||||||
void openMemoryEditor();
|
void openMemoryEditor();
|
||||||
|
void updateMemoryEditors();
|
||||||
|
|
||||||
const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
|
const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
|
||||||
|
|
||||||
@@ -2433,6 +2434,16 @@ void DebuggerPluginPrivate::openMemoryEditor()
|
|||||||
currentEngine()->openMemoryView(dialog.address());
|
currentEngine()->openMemoryView(dialog.address());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebuggerPluginPrivate::updateMemoryEditors()
|
||||||
|
{
|
||||||
|
EditorManager *editorManager = EditorManager::instance();
|
||||||
|
QTC_ASSERT(editorManager, return);
|
||||||
|
foreach (IEditor *editor, editorManager->openedEditors()) {
|
||||||
|
if (editor->property(Constants::OPENED_WITH_MEMORY).toBool())
|
||||||
|
QMetaObject::invokeMethod(editor->widget(), "updateContents");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DebuggerPluginPrivate::coreShutdown()
|
void DebuggerPluginPrivate::coreShutdown()
|
||||||
{
|
{
|
||||||
m_shuttingDown = true;
|
m_shuttingDown = true;
|
||||||
|
|||||||
@@ -3530,6 +3530,7 @@ void GdbEngine::updateLocals(const QVariant &cookie)
|
|||||||
updateLocalsPython(false, QByteArray());
|
updateLocalsPython(false, QByteArray());
|
||||||
else
|
else
|
||||||
updateLocalsClassic(cookie);
|
updateLocalsClassic(cookie);
|
||||||
|
debuggerCore()->updateMemoryEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ void MemoryViewAgent::createBinEditor(quint64 addr)
|
|||||||
Core::Constants::K_DEFAULT_BINARY_EDITOR_ID,
|
Core::Constants::K_DEFAULT_BINARY_EDITOR_ID,
|
||||||
&titlePattern);
|
&titlePattern);
|
||||||
if (editor) {
|
if (editor) {
|
||||||
|
editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true);
|
||||||
|
editor->setProperty(Debugger::Constants::OPENED_WITH_MEMORY, true);
|
||||||
connect(editor->widget(),
|
connect(editor->widget(),
|
||||||
SIGNAL(lazyDataRequested(Core::IEditor *, quint64,bool)),
|
SIGNAL(lazyDataRequested(Core::IEditor *, quint64,bool)),
|
||||||
SLOT(fetchLazyData(Core::IEditor *, quint64,bool)));
|
SLOT(fetchLazyData(Core::IEditor *, quint64,bool)));
|
||||||
@@ -103,7 +105,6 @@ void MemoryViewAgent::createBinEditor(quint64 addr)
|
|||||||
SIGNAL(endOfFileRequested(Core::IEditor *)),
|
SIGNAL(endOfFileRequested(Core::IEditor *)),
|
||||||
SLOT(handleEndOfFileRequested(Core::IEditor*)));
|
SLOT(handleEndOfFileRequested(Core::IEditor*)));
|
||||||
m_editors << editor;
|
m_editors << editor;
|
||||||
editorManager->activateEditor(editor);
|
|
||||||
QMetaObject::invokeMethod(editor->widget(), "setNewWindowRequestAllowed");
|
QMetaObject::invokeMethod(editor->widget(), "setNewWindowRequestAllowed");
|
||||||
QMetaObject::invokeMethod(editor->widget(), "setLazyData",
|
QMetaObject::invokeMethod(editor->widget(), "setLazyData",
|
||||||
Q_ARG(quint64, addr), Q_ARG(int, DataRange), Q_ARG(int, BinBlockSize));
|
Q_ARG(quint64, addr), Q_ARG(int, DataRange), Q_ARG(int, BinBlockSize));
|
||||||
|
|||||||
@@ -1859,6 +1859,13 @@ public:
|
|||||||
Foo *f;
|
Foo *f;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void testMemoryView()
|
||||||
|
{
|
||||||
|
int a[20];
|
||||||
|
for (int i = 0; i != 20; ++i)
|
||||||
|
a[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
void testUninitialized()
|
void testUninitialized()
|
||||||
{
|
{
|
||||||
QString s;
|
QString s;
|
||||||
@@ -2111,6 +2118,7 @@ void testQSettings()
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
testMemoryView();
|
||||||
//testQSettings();
|
//testQSettings();
|
||||||
//testWCout0();
|
//testWCout0();
|
||||||
//testWCout();
|
//testWCout();
|
||||||
|
|||||||
Reference in New Issue
Block a user