forked from qt-creator/qt-creator
Debugger: Fix "Restart debugging session" regression
Introduced with the support for fork-follows-child. With 'Restart', we temporarily don't have a living thread, so that can't be taken as indication for ending the debugging session. Task-number: QTCREATORBUG-14393 Change-Id: I0070b9ca7e6897dab48bdbcf493d03df4709be98 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -240,6 +240,7 @@ GdbEngine::GdbEngine(const DebuggerRunParameters &startParameters)
|
|||||||
m_terminalTrap = startParameters.useTerminal;
|
m_terminalTrap = startParameters.useTerminal;
|
||||||
m_fullStartDone = false;
|
m_fullStartDone = false;
|
||||||
m_systemDumpersLoaded = false;
|
m_systemDumpersLoaded = false;
|
||||||
|
m_rerunPending = true;
|
||||||
|
|
||||||
m_debugInfoTaskHandler = new DebugInfoTaskHandler(this);
|
m_debugInfoTaskHandler = new DebugInfoTaskHandler(this);
|
||||||
//ExtensionSystem::PluginManager::addObject(m_debugInfoTaskHandler);
|
//ExtensionSystem::PluginManager::addObject(m_debugInfoTaskHandler);
|
||||||
@@ -1972,9 +1973,13 @@ void GdbEngine::handleThreadGroupCreated(const GdbMi &result)
|
|||||||
void GdbEngine::handleThreadGroupExited(const GdbMi &result)
|
void GdbEngine::handleThreadGroupExited(const GdbMi &result)
|
||||||
{
|
{
|
||||||
QByteArray groupId = result["id"].data();
|
QByteArray groupId = result["id"].data();
|
||||||
if (threadsHandler()->notifyGroupExited(groupId))
|
if (threadsHandler()->notifyGroupExited(groupId)) {
|
||||||
|
if (m_rerunPending)
|
||||||
|
m_rerunPending = false;
|
||||||
|
else
|
||||||
notifyInferiorExited();
|
notifyInferiorExited();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int GdbEngine::currentFrame() const
|
int GdbEngine::currentFrame() const
|
||||||
{
|
{
|
||||||
@@ -4322,6 +4327,7 @@ void GdbEngine::resetInferior()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
m_rerunPending = true;
|
||||||
requestInterruptInferior();
|
requestInterruptInferior();
|
||||||
runEngine();
|
runEngine();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ private:
|
|||||||
CommandsDoneCallback m_commandsDoneCallback;
|
CommandsDoneCallback m_commandsDoneCallback;
|
||||||
|
|
||||||
QList<DebuggerCommand> m_commandsToRunOnTemporaryBreak;
|
QList<DebuggerCommand> m_commandsToRunOnTemporaryBreak;
|
||||||
|
bool m_rerunPending;
|
||||||
|
|
||||||
private: ////////// Gdb Output, State & Capability Handling //////////
|
private: ////////// Gdb Output, State & Capability Handling //////////
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user