forked from qt-creator/qt-creator
debugger: refactor module/symbol view
This commit is contained in:
@@ -16,7 +16,12 @@ class qdebug:
|
|||||||
self.typeformats = typeformats
|
self.typeformats = typeformats
|
||||||
self.individualformats = individualformats
|
self.individualformats = individualformats
|
||||||
self.watchers = watchers
|
self.watchers = watchers
|
||||||
self.doit()
|
if self.options == "listmodules":
|
||||||
|
self.handleListModules()
|
||||||
|
elif self.options == "listsymbols":
|
||||||
|
self.handleListSymbols(expanded)
|
||||||
|
else:
|
||||||
|
self.handleListVars()
|
||||||
|
|
||||||
def put(self, value):
|
def put(self, value):
|
||||||
sys.stdout.write(value)
|
sys.stdout.write(value)
|
||||||
@@ -90,6 +95,9 @@ class qdebug:
|
|||||||
return
|
return
|
||||||
if str(value).startswith("<class '"):
|
if str(value).startswith("<class '"):
|
||||||
return
|
return
|
||||||
|
# FIXME: Should we?
|
||||||
|
if str(value).startswith("<enum-item "):
|
||||||
|
return
|
||||||
self.put("{")
|
self.put("{")
|
||||||
self.putField("iname", iname)
|
self.putField("iname", iname)
|
||||||
self.putName(name)
|
self.putName(name)
|
||||||
@@ -146,13 +154,15 @@ class qdebug:
|
|||||||
pass
|
pass
|
||||||
elif tt == "function":
|
elif tt == "function":
|
||||||
pass
|
pass
|
||||||
|
elif str(value).startswith("<enum-item "):
|
||||||
|
# FIXME: Having enums always shown like this is not nice.
|
||||||
|
self.putValue(str(value)[11:-1])
|
||||||
|
self.putNumChild(0)
|
||||||
else:
|
else:
|
||||||
v = str(value)
|
v = str(value)
|
||||||
p = v.find(" object at ")
|
p = v.find(" object at ")
|
||||||
if p > 1:
|
if p > 1:
|
||||||
v = "@" + v[p + 11:-1]
|
v = "@" + v[p + 11:-1]
|
||||||
elif v.startswith("<enum-item "):
|
|
||||||
v = v[11:-1]
|
|
||||||
self.putValue(v)
|
self.putValue(v)
|
||||||
if self.isExpanded(iname):
|
if self.isExpanded(iname):
|
||||||
self.put("children=[")
|
self.put("children=[")
|
||||||
@@ -177,7 +187,7 @@ class qdebug:
|
|||||||
def warn(self, msg):
|
def warn(self, msg):
|
||||||
self.putField("warning", msg)
|
self.putField("warning", msg)
|
||||||
|
|
||||||
def doit(self):
|
def handleListVars(self):
|
||||||
# Trigger error to get a backtrace.
|
# Trigger error to get a backtrace.
|
||||||
frame = None
|
frame = None
|
||||||
#self.warn("frame: %s" % frame)
|
#self.warn("frame: %s" % frame)
|
||||||
@@ -207,3 +217,24 @@ class qdebug:
|
|||||||
n = n + 1
|
n = n + 1
|
||||||
|
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
def handleListModules(self):
|
||||||
|
self.put("modules=[");
|
||||||
|
for name in sys.modules:
|
||||||
|
self.put("{")
|
||||||
|
self.putName(name)
|
||||||
|
self.putValue(sys.modules[name])
|
||||||
|
self.put("},")
|
||||||
|
self.put("]")
|
||||||
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
def handleListSymbols(self, module):
|
||||||
|
#self.put("symbols=%s" % dir(sys.modules[module]))
|
||||||
|
self.put("symbols=[");
|
||||||
|
for name in sys.modules:
|
||||||
|
self.put("{")
|
||||||
|
self.putName(name)
|
||||||
|
#self.putValue(sys.modules[name])
|
||||||
|
self.put("},")
|
||||||
|
self.put("]")
|
||||||
|
sys.stdout.flush()
|
||||||
|
|||||||
@@ -1183,7 +1183,7 @@ void CdbDebugEngine::loadAllSymbols()
|
|||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Symbol> CdbDebugEngine::moduleSymbols(const QString &moduleName)
|
void> CdbDebugEngine::requestModuleSymbols(const QString &moduleName)
|
||||||
{
|
{
|
||||||
QList<Symbol> rc;
|
QList<Symbol> rc;
|
||||||
QString errorMessage;
|
QString errorMessage;
|
||||||
@@ -1199,7 +1199,7 @@ QList<Symbol> CdbDebugEngine::moduleSymbols(const QString &moduleName)
|
|||||||
} while (false);
|
} while (false);
|
||||||
if (!success)
|
if (!success)
|
||||||
warning(errorMessage);
|
warning(errorMessage);
|
||||||
return rc;
|
manager()->showModuleSymbols(moduleName, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CdbDebugEngine::reloadRegisters()
|
void CdbDebugEngine::reloadRegisters()
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ public:
|
|||||||
virtual void reloadModules();
|
virtual void reloadModules();
|
||||||
virtual void loadSymbols(const QString &moduleName);
|
virtual void loadSymbols(const QString &moduleName);
|
||||||
virtual void loadAllSymbols();
|
virtual void loadAllSymbols();
|
||||||
virtual QList<Symbol> moduleSymbols(const QString &moduleName);
|
virtual void requestModuleSymbols(const QString &moduleName);
|
||||||
|
|
||||||
virtual void reloadRegisters();
|
virtual void reloadRegisters();
|
||||||
virtual void reloadSourceFiles();
|
virtual void reloadSourceFiles();
|
||||||
|
|||||||
@@ -98,6 +98,7 @@
|
|||||||
#include <QtGui/QTextCursor>
|
#include <QtGui/QTextCursor>
|
||||||
#include <QtGui/QToolButton>
|
#include <QtGui/QToolButton>
|
||||||
#include <QtGui/QToolTip>
|
#include <QtGui/QToolTip>
|
||||||
|
#include <QtGui/QTreeWidget>
|
||||||
|
|
||||||
#define DEBUG_STATE 1
|
#define DEBUG_STATE 1
|
||||||
#ifdef DEBUG_STATE
|
#ifdef DEBUG_STATE
|
||||||
@@ -460,8 +461,6 @@ void DebuggerManager::init()
|
|||||||
this, SLOT(loadAllSymbols()));
|
this, SLOT(loadAllSymbols()));
|
||||||
connect(modulesView, SIGNAL(fileOpenRequested(QString)),
|
connect(modulesView, SIGNAL(fileOpenRequested(QString)),
|
||||||
this, SLOT(fileOpen(QString)));
|
this, SLOT(fileOpen(QString)));
|
||||||
connect(modulesView, SIGNAL(newDockRequested(QWidget*)),
|
|
||||||
this, SLOT(createNewDock(QWidget*)));
|
|
||||||
|
|
||||||
// Source Files
|
// Source Files
|
||||||
//d->m_sourceFilesHandler = new SourceFilesHandler;
|
//d->m_sourceFilesHandler = new SourceFilesHandler;
|
||||||
@@ -1214,10 +1213,31 @@ void DebuggerManager::loadSymbols(const QString &module)
|
|||||||
d->m_engine->loadSymbols(module);
|
d->m_engine->loadSymbols(module);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Symbol> DebuggerManager::moduleSymbols(const QString &moduleName)
|
void DebuggerManager::requestModuleSymbols(const QString &moduleName)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(d->m_engine, return QList<Symbol>());
|
QTC_ASSERT(d->m_engine, return);
|
||||||
return d->m_engine->moduleSymbols(moduleName);
|
d->m_engine->requestModuleSymbols(moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DebuggerManager::showModuleSymbols(const QString &moduleName,
|
||||||
|
const QList<Symbol> &symbols)
|
||||||
|
{
|
||||||
|
QTC_ASSERT(d->m_engine, return);
|
||||||
|
QTreeWidget *w = new QTreeWidget;
|
||||||
|
w->setColumnCount(3);
|
||||||
|
w->setRootIsDecorated(false);
|
||||||
|
w->setAlternatingRowColors(true);
|
||||||
|
w->setSortingEnabled(true);
|
||||||
|
w->setHeaderLabels(QStringList() << tr("Symbol") << tr("Address") << tr("Code"));
|
||||||
|
w->setWindowTitle(tr("Symbols in \"%1\"").arg(moduleName));
|
||||||
|
foreach (const Symbol &s, symbols) {
|
||||||
|
QTreeWidgetItem *it = new QTreeWidgetItem;
|
||||||
|
it->setData(0, Qt::DisplayRole, s.name);
|
||||||
|
it->setData(1, Qt::DisplayRole, s.address);
|
||||||
|
it->setData(2, Qt::DisplayRole, s.state);
|
||||||
|
w->addTopLevelItem(it);
|
||||||
|
}
|
||||||
|
createNewDock(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerManager::executeStep()
|
void DebuggerManager::executeStep()
|
||||||
|
|||||||
@@ -329,7 +329,9 @@ private:
|
|||||||
public:
|
public:
|
||||||
// stuff in this block should be made private by moving it to
|
// stuff in this block should be made private by moving it to
|
||||||
// one of the interfaces
|
// one of the interfaces
|
||||||
QList<Internal::Symbol> moduleSymbols(const QString &moduleName);
|
void requestModuleSymbols(const QString &moduleName);
|
||||||
|
void showModuleSymbols(const QString &moduleName,
|
||||||
|
const QList<Internal::Symbol> &symbols);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void debuggingFinished();
|
void debuggingFinished();
|
||||||
|
|||||||
@@ -2587,7 +2587,7 @@ void GdbEngine::loadAllSymbols()
|
|||||||
reloadModulesInternal();
|
reloadModulesInternal();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Symbol> GdbEngine::moduleSymbols(const QString &moduleName)
|
void GdbEngine::requestModuleSymbols(const QString &moduleName)
|
||||||
{
|
{
|
||||||
QList<Symbol> rc;
|
QList<Symbol> rc;
|
||||||
bool success = false;
|
bool success = false;
|
||||||
@@ -2618,7 +2618,7 @@ QList<Symbol> GdbEngine::moduleSymbols(const QString &moduleName)
|
|||||||
} while (false);
|
} while (false);
|
||||||
if (!success)
|
if (!success)
|
||||||
qWarning("moduleSymbols: %s\n", qPrintable(errorMessage));
|
qWarning("moduleSymbols: %s\n", qPrintable(errorMessage));
|
||||||
return rc;
|
manager()->showModuleSymbols(moduleName, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GdbEngine::reloadModules()
|
void GdbEngine::reloadModules()
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ private: ////////// View & Data Stuff //////////
|
|||||||
//
|
//
|
||||||
virtual void loadSymbols(const QString &moduleName);
|
virtual void loadSymbols(const QString &moduleName);
|
||||||
virtual void loadAllSymbols();
|
virtual void loadAllSymbols();
|
||||||
virtual QList<Symbol> moduleSymbols(const QString &moduleName);
|
virtual void requestModuleSymbols(const QString &moduleName);
|
||||||
virtual void reloadModules();
|
virtual void reloadModules();
|
||||||
void reloadModulesInternal();
|
void reloadModulesInternal();
|
||||||
void handleModulesList(const GdbResponse &response);
|
void handleModulesList(const GdbResponse &response);
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public:
|
|||||||
virtual void reloadModules() = 0;
|
virtual void reloadModules() = 0;
|
||||||
virtual void loadSymbols(const QString &moduleName) = 0;
|
virtual void loadSymbols(const QString &moduleName) = 0;
|
||||||
virtual void loadAllSymbols() = 0;
|
virtual void loadAllSymbols() = 0;
|
||||||
virtual QList<Symbol> moduleSymbols(const QString &moduleName) = 0;
|
virtual void requestModuleSymbols(const QString &moduleName) = 0;
|
||||||
|
|
||||||
virtual void reloadRegisters() = 0;
|
virtual void reloadRegisters() = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
|
|
||||||
// QAbstractItemModel
|
// QAbstractItemModel
|
||||||
int columnCount(const QModelIndex &parent) const
|
int columnCount(const QModelIndex &parent) const
|
||||||
{ return parent.isValid() ? 0 : 4; }
|
{ return parent.isValid() ? 0 : 5; }
|
||||||
int rowCount(const QModelIndex &parent) const
|
int rowCount(const QModelIndex &parent) const
|
||||||
{ return parent.isValid() ? 0 : m_modules.size(); }
|
{ return parent.isValid() ? 0 : m_modules.size(); }
|
||||||
QModelIndex parent(const QModelIndex &) const { return QModelIndex(); }
|
QModelIndex parent(const QModelIndex &) const { return QModelIndex(); }
|
||||||
@@ -85,6 +85,7 @@ QVariant ModulesModel::headerData(int section,
|
|||||||
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
|
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
|
||||||
static QString headers[] = {
|
static QString headers[] = {
|
||||||
tr("Module name") + " ",
|
tr("Module name") + " ",
|
||||||
|
tr("Module path") + " ",
|
||||||
tr("Symbols read") + " ",
|
tr("Symbols read") + " ",
|
||||||
tr("Start address") + " ",
|
tr("Start address") + " ",
|
||||||
tr("End address") + " "
|
tr("End address") + " "
|
||||||
@@ -112,13 +113,17 @@ QVariant ModulesModel::data(const QModelIndex &index, int role) const
|
|||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole)
|
||||||
return module.symbolsRead ? "yes" : "no";
|
return module.modulePath;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole)
|
||||||
return module.startAddress;
|
return module.symbolsRead ? "yes" : "no";
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
if (role == Qt::DisplayRole)
|
||||||
|
return module.startAddress;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
if (role == Qt::DisplayRole)
|
if (role == Qt::DisplayRole)
|
||||||
return module.endAddress;
|
return module.endAddress;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
QString moduleName;
|
QString moduleName;
|
||||||
|
QString modulePath;
|
||||||
bool symbolsRead;
|
bool symbolsRead;
|
||||||
QString startAddress;
|
QString startAddress;
|
||||||
QString endAddress;
|
QString endAddress;
|
||||||
|
|||||||
@@ -175,6 +175,7 @@ void ModulesWindow::resizeColumnsToContents()
|
|||||||
resizeColumnToContents(0);
|
resizeColumnToContents(0);
|
||||||
resizeColumnToContents(1);
|
resizeColumnToContents(1);
|
||||||
resizeColumnToContents(2);
|
resizeColumnToContents(2);
|
||||||
|
resizeColumnToContents(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModulesWindow::setAlwaysResizeColumnsToContents(bool on)
|
void ModulesWindow::setAlwaysResizeColumnsToContents(bool on)
|
||||||
@@ -186,6 +187,7 @@ void ModulesWindow::setAlwaysResizeColumnsToContents(bool on)
|
|||||||
header()->setResizeMode(1, mode);
|
header()->setResizeMode(1, mode);
|
||||||
header()->setResizeMode(2, mode);
|
header()->setResizeMode(2, mode);
|
||||||
header()->setResizeMode(3, mode);
|
header()->setResizeMode(3, mode);
|
||||||
|
header()->setResizeMode(4, mode);
|
||||||
//setColumnHidden(3, true);
|
//setColumnHidden(3, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,27 +199,8 @@ void ModulesWindow::setModel(QAbstractItemModel *model)
|
|||||||
|
|
||||||
void ModulesWindow::showSymbols(const QString &name)
|
void ModulesWindow::showSymbols(const QString &name)
|
||||||
{
|
{
|
||||||
if (name.isEmpty())
|
if (!name.isEmpty())
|
||||||
return;
|
m_debuggerManager->requestModuleSymbols(name);
|
||||||
QApplication::setOverrideCursor(Qt::WaitCursor);
|
|
||||||
const QList<Symbol> symbols = m_debuggerManager->moduleSymbols(name);
|
|
||||||
QApplication::restoreOverrideCursor();
|
|
||||||
if (symbols.empty())
|
|
||||||
return;
|
|
||||||
QTreeWidget *w = new QTreeWidget;
|
|
||||||
w->setColumnCount(3);
|
|
||||||
w->setRootIsDecorated(false);
|
|
||||||
w->setAlternatingRowColors(true);
|
|
||||||
w->setHeaderLabels(QStringList() << tr("Address") << tr("Code") << tr("Symbol"));
|
|
||||||
w->setWindowTitle(tr("Symbols in \"%1\"").arg(name));
|
|
||||||
foreach (const Symbol &s, symbols) {
|
|
||||||
QTreeWidgetItem *it = new QTreeWidgetItem;
|
|
||||||
it->setData(0, Qt::DisplayRole, s.address);
|
|
||||||
it->setData(1, Qt::DisplayRole, s.state);
|
|
||||||
it->setData(2, Qt::DisplayRole, s.name);
|
|
||||||
w->addTopLevelItem(it);
|
|
||||||
}
|
|
||||||
emit newDockRequested(w);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -394,13 +394,52 @@ void PdbEngine::loadAllSymbols()
|
|||||||
|
|
||||||
void PdbEngine::reloadModules()
|
void PdbEngine::reloadModules()
|
||||||
{
|
{
|
||||||
|
postCommand("qdebug('listmodules')", CB(handleListModules));
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Symbol> PdbEngine::moduleSymbols(const QString & /*moduleName*/)
|
void PdbEngine::handleListModules(const PdbResponse &response)
|
||||||
{
|
{
|
||||||
return QList<Symbol>();
|
GdbMi out;
|
||||||
|
out.fromString(response.data.trimmed());
|
||||||
|
QList<Module> modules;
|
||||||
|
foreach (const GdbMi &item, out.children()) {
|
||||||
|
Module module;
|
||||||
|
module.moduleName = _(item.findChild("name").data());
|
||||||
|
QString path = _(item.findChild("value").data());
|
||||||
|
int pos = path.indexOf(_("' from '"));
|
||||||
|
if (pos != -1) {
|
||||||
|
path = path.mid(pos + 8);
|
||||||
|
if (path.size() >= 2)
|
||||||
|
path.chop(2);
|
||||||
|
} else if (path.startsWith(_("<module '"))
|
||||||
|
&& path.endsWith(_("' (built-in)>"))) {
|
||||||
|
path = _("(builtin)");
|
||||||
|
}
|
||||||
|
module.modulePath = path;
|
||||||
|
modules.append(module);
|
||||||
|
}
|
||||||
|
manager()->modulesHandler()->setModules(modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PdbEngine::requestModuleSymbols(const QString &moduleName)
|
||||||
|
{
|
||||||
|
postCommand("qdebug('listsymbols','" + moduleName.toLatin1() + "')",
|
||||||
|
CB(handleListSymbols), moduleName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PdbEngine::handleListSymbols(const PdbResponse &response)
|
||||||
|
{
|
||||||
|
GdbMi out;
|
||||||
|
out.fromString(response.data.trimmed());
|
||||||
|
QList<Symbol> symbols;
|
||||||
|
QString moduleName = response.cookie.toString();
|
||||||
|
foreach (const GdbMi &item, out.children()) {
|
||||||
|
Symbol symbol;
|
||||||
|
symbol.name = _(item.findChild("name").data());
|
||||||
|
symbols.append(symbol);
|
||||||
|
}
|
||||||
|
manager()->showModuleSymbols(moduleName, symbols);
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@@ -771,6 +810,11 @@ void PdbEngine::debugMessage(const QString &msg)
|
|||||||
showDebuggerOutput(LogDebug, msg);
|
showDebuggerOutput(LogDebug, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned PdbEngine::debuggerCapabilities() const
|
||||||
|
{
|
||||||
|
return ReloadModuleCapability;
|
||||||
|
}
|
||||||
|
|
||||||
IDebuggerEngine *createPdbEngine(DebuggerManager *manager)
|
IDebuggerEngine *createPdbEngine(DebuggerManager *manager)
|
||||||
{
|
{
|
||||||
return new PdbEngine(manager);
|
return new PdbEngine(manager);
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ private:
|
|||||||
|
|
||||||
void loadSymbols(const QString &moduleName);
|
void loadSymbols(const QString &moduleName);
|
||||||
void loadAllSymbols();
|
void loadAllSymbols();
|
||||||
virtual QList<Symbol> moduleSymbols(const QString &moduleName);
|
void requestModuleSymbols(const QString &moduleName);
|
||||||
void reloadModules();
|
void reloadModules();
|
||||||
void reloadRegisters() {}
|
void reloadRegisters() {}
|
||||||
void reloadSourceFiles() {}
|
void reloadSourceFiles() {}
|
||||||
@@ -107,6 +107,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
void debugMessage(const QString &msg);
|
void debugMessage(const QString &msg);
|
||||||
QString errorMessage(QProcess::ProcessError error) const;
|
QString errorMessage(QProcess::ProcessError error) const;
|
||||||
|
unsigned debuggerCapabilities() const;
|
||||||
|
|
||||||
Q_SLOT void handlePdbFinished(int, QProcess::ExitStatus status);
|
Q_SLOT void handlePdbFinished(int, QProcess::ExitStatus status);
|
||||||
Q_SLOT void handlePdbError(QProcess::ProcessError error);
|
Q_SLOT void handlePdbError(QProcess::ProcessError error);
|
||||||
@@ -135,6 +136,8 @@ private:
|
|||||||
void handleStop(const PdbResponse &response);
|
void handleStop(const PdbResponse &response);
|
||||||
void handleBacktrace(const PdbResponse &response);
|
void handleBacktrace(const PdbResponse &response);
|
||||||
void handleListLocals(const PdbResponse &response);
|
void handleListLocals(const PdbResponse &response);
|
||||||
|
void handleListModules(const PdbResponse &response);
|
||||||
|
void handleListSymbols(const PdbResponse &response);
|
||||||
void handleLoadDumper(const PdbResponse &response);
|
void handleLoadDumper(const PdbResponse &response);
|
||||||
void handleBreakInsert(const PdbResponse &response);
|
void handleBreakInsert(const PdbResponse &response);
|
||||||
|
|
||||||
|
|||||||
@@ -448,9 +448,8 @@ void ScriptEngine::reloadModules()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Symbol> ScriptEngine::moduleSymbols(const QString & /*moduleName*/)
|
void ScriptEngine::requestModuleSymbols(const QString & /*moduleName*/)
|
||||||
{
|
{
|
||||||
return QList<Symbol>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ private:
|
|||||||
|
|
||||||
void loadSymbols(const QString &moduleName);
|
void loadSymbols(const QString &moduleName);
|
||||||
void loadAllSymbols();
|
void loadAllSymbols();
|
||||||
virtual QList<Symbol> moduleSymbols(const QString &moduleName);
|
void requestModuleSymbols(const QString &moduleName);
|
||||||
void reloadModules();
|
void reloadModules();
|
||||||
void reloadRegisters() {}
|
void reloadRegisters() {}
|
||||||
void reloadSourceFiles() {}
|
void reloadSourceFiles() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user