debugger: start second shot at Qml debugging

This commit is contained in:
hjk
2010-06-09 16:13:47 +02:00
parent 035cfd5506
commit 17a2f6711e
8 changed files with 759 additions and 14 deletions

View File

@@ -160,6 +160,7 @@ IDebuggerEngine *createGdbEngine(DebuggerManager *parent);
IDebuggerEngine *createScriptEngine(DebuggerManager *parent);
IDebuggerEngine *createPdbEngine(DebuggerManager *parent);
IDebuggerEngine *createTcfEngine(DebuggerManager *parent);
IDebuggerEngine *createQmlEngine(DebuggerManager *parent);
// The createCdbEngine function takes a list of options pages it can add to.
// This allows for having a "enabled" toggle on the page independently
@@ -254,6 +255,7 @@ static Debugger::Internal::IDebuggerEngine *gdbEngine = 0;
static Debugger::Internal::IDebuggerEngine *scriptEngine = 0;
static Debugger::Internal::IDebuggerEngine *cdbEngine = 0;
static Debugger::Internal::IDebuggerEngine *pdbEngine = 0;
static Debugger::Internal::IDebuggerEngine *qmlEngine = 0;
static Debugger::Internal::IDebuggerEngine *tcfEngine = 0;
struct DebuggerManagerPrivate
@@ -351,6 +353,7 @@ DebuggerManager::~DebuggerManager()
doDelete(gdbEngine);
doDelete(cdbEngine);
doDelete(tcfEngine);
doDelete(qmlEngine);
doDelete(d->m_breakHandler);
doDelete(d->m_threadsHandler);
@@ -359,11 +362,6 @@ DebuggerManager::~DebuggerManager()
doDelete(d->m_snapshotHandler);
doDelete(d->m_stackHandler);
doDelete(d->m_watchHandler);
doDelete(gdbEngine);
doDelete(scriptEngine);
doDelete(cdbEngine);
doDelete(tcfEngine);
# undef doDelete
DebuggerManagerPrivate::instance = 0;
delete d;
@@ -692,6 +690,11 @@ QList<Core::IOptionsPage*> DebuggerManager::initializeEngines(unsigned enabledTy
tcfEngine->addOptionPages(&rc);
}
if (enabledTypeFlags & QmlEngineType) {
qmlEngine = createQmlEngine(this);
//qmlEngine->addOptionPages(&rc);
}
d->m_engine = 0;
STATE_DEBUG(gdbEngine << cdbEngine << scriptEngine
<< pdbEngine << rc.size());
@@ -976,6 +979,15 @@ static IDebuggerEngine *debuggerEngineForExecutable(const QString &executable,
QString *errorMessage,
QString *settingsIdHint)
{
if (executable.endsWith(_("qmlviewer"))) {
qDebug() << "HERE";
if (!qmlEngine) {
*errorMessage = msgEngineNotAvailable("Qml Engine");
return 0;
}
return qmlEngine;
}
if (executable.endsWith(_(".js"))) {
if (!scriptEngine) {
*errorMessage = msgEngineNotAvailable("Script Engine");
@@ -1016,7 +1028,8 @@ static IDebuggerEngine *debuggerEngineForExecutable(const QString &executable,
// We need the CDB debugger in order to be able to debug VS
// executables
if (!DebuggerManager::instance()->checkDebugConfiguration(ProjectExplorer::ToolChain::MSVC, errorMessage, 0 , settingsIdHint))
if (!DebuggerManager::instance()->checkDebugConfiguration(
ProjectExplorer::ToolChain::MSVC, errorMessage, 0, settingsIdHint))
return 0;
return cdbEngine;
#endif
@@ -1049,6 +1062,7 @@ static IDebuggerEngine *debuggerEngineForMode(DebuggerStartMode startMode, QStri
void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
{
qDebug() << "TARGET: " << sp->executable;
if (d->m_state != DebuggerNotReady)
return;
d->m_startParameters = sp;
@@ -1067,7 +1081,9 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
// Figure out engine: toolchain, executable, attach or default
const DebuggerStartMode startMode = sp->startMode;
if (sp->executable.endsWith(_(".js")))
if (sp->executable.endsWith(_("qmlviewer")))
d->m_engine = qmlEngine;
else if (sp->executable.endsWith(_(".js")))
d->m_engine = scriptEngine;
else if (sp->executable.endsWith(_(".py")))
d->m_engine = pdbEngine;