forked from qt-creator/qt-creator
QNX: Fix debugging
Before the amended change, when running QNX debugger, d->useDebugServer was false
(DebuggerRunTool::setUseDebugServer() wasn't called in this case),
so we called directly continueAfterDebugServerStart() from inside
startDebugServerIfNeededAndContinueStartup().
After the amended change, usedDebugChannel() returns true,
thus we are skipping direct execution of continueAfterDebugServerStart(),
and we are starting a process that never ends instead.
The fix is to introduce DebuggerRunParameters::m_skipDebugServer field,
defaulting to false, and to set it to true in case of qnx debugging.
Amends 1ebd3c1750
Fixes: QTCREATORBUG-32478
Change-Id: I06c377ec6762371ab16582ae0fcdef6cacff1f83
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -268,6 +268,9 @@ public:
|
|||||||
void setServerEssential(bool on) { m_serverEssential = on; }
|
void setServerEssential(bool on) { m_serverEssential = on; }
|
||||||
bool serverEssential() const { return m_serverEssential; }
|
bool serverEssential() const { return m_serverEssential; }
|
||||||
|
|
||||||
|
void setSkipDebugServer(bool on) { m_skipDebugServer = on; }
|
||||||
|
bool skipDebugServer() const { return m_skipDebugServer; }
|
||||||
|
|
||||||
void setAddQmlServerInferiorCmdArgIfNeeded(bool on) { m_addQmlServerInferiorCmdArgIfNeeded = on; }
|
void setAddQmlServerInferiorCmdArgIfNeeded(bool on) { m_addQmlServerInferiorCmdArgIfNeeded = on; }
|
||||||
bool isAddQmlServerInferiorCmdArgIfNeeded() const { return m_addQmlServerInferiorCmdArgIfNeeded; }
|
bool isAddQmlServerInferiorCmdArgIfNeeded() const { return m_addQmlServerInferiorCmdArgIfNeeded; }
|
||||||
|
|
||||||
@@ -367,6 +370,7 @@ private:
|
|||||||
Utils::ProcessHandle m_serverAttachPid;
|
Utils::ProcessHandle m_serverAttachPid;
|
||||||
bool m_serverUseMulti = true;
|
bool m_serverUseMulti = true;
|
||||||
bool m_serverEssential = true;
|
bool m_serverEssential = true;
|
||||||
|
bool m_skipDebugServer = false;
|
||||||
bool m_addQmlServerInferiorCmdArgIfNeeded = false;
|
bool m_addQmlServerInferiorCmdArgIfNeeded = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -562,7 +562,7 @@ void DebuggerRunTool::showMessage(const QString &msg, int channel, int timeout)
|
|||||||
|
|
||||||
void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
|
void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
|
||||||
{
|
{
|
||||||
if (!runControl()->usesDebugChannel()) {
|
if (!runControl()->usesDebugChannel() || m_runParameters.skipDebugServer()) {
|
||||||
continueAfterDebugServerStart();
|
continueAfterDebugServerStart();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -208,6 +208,7 @@ public:
|
|||||||
rp.setCloseMode(KillAtClose);
|
rp.setCloseMode(KillAtClose);
|
||||||
rp.setUseCtrlCStub(true);
|
rp.setUseCtrlCStub(true);
|
||||||
rp.setSolibSearchPath(FileUtils::toFilePathList(searchPaths(k)));
|
rp.setSolibSearchPath(FileUtils::toFilePathList(searchPaths(k)));
|
||||||
|
rp.setSkipDebugServer(true);
|
||||||
if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(k))) {
|
if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(k))) {
|
||||||
rp.setSysRoot(qtVersion->qnxTarget());
|
rp.setSysRoot(qtVersion->qnxTarget());
|
||||||
rp.modifyDebuggerEnvironment(qtVersion->environment());
|
rp.modifyDebuggerEnvironment(qtVersion->environment());
|
||||||
|
Reference in New Issue
Block a user