Commit 2ee9a06f authored by Marco Bubke's avatar Marco Bubke Committed by hjk

Debugger: Use Core::AsynchronousMessageBox

Nested event loops can lead to crashes, so it is better to use a dialog
which does not have have its own event loop.

Change-Id: Icd2390c9026bc1ef88e72a570df5813fe5cbdaa2
Reviewed-by: default avatarhjk <hjk121@nokiamail.com>
parent 7e8db09c
......@@ -49,7 +49,6 @@
#include <QKeyEvent>
#include <QLabel>
#include <QLineEdit>
#include <QMessageBox>
#include <QMenu>
#include <QSpinBox>
#include <QTextEdit>
......
......@@ -55,6 +55,7 @@
#include <debugger/shared/hostutils.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <projectexplorer/taskhub.h>
#include <texteditor/texteditor.h>
......@@ -72,7 +73,6 @@
#include <cpptools/cppworkingcopy.h>
#include <QDir>
#include <QMessageBox>
#include <cctype>
......@@ -534,7 +534,7 @@ void CdbEngine::consoleStubError(const QString &msg)
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineIll")
notifyEngineIll();
}
showMessageBox(QMessageBox::Critical, tr("Debugger Error"), msg);
Core::AsynchronousMessageBox::critical(tr("Debugger Error"), msg);
}
void CdbEngine::consoleStubProcessStarted()
......@@ -552,7 +552,7 @@ void CdbEngine::consoleStubProcessStarted()
QString errorMessage;
if (!launchCDB(attachParameters, &errorMessage)) {
showMessage(errorMessage, LogError);
showMessageBox(QMessageBox::Critical, tr("Failed to Start the Debugger"), errorMessage);
Core::AsynchronousMessageBox::critical(tr("Failed to Start the Debugger"), errorMessage);
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupFailed")
notifyEngineSetupFailed();
}
......@@ -599,7 +599,7 @@ void CdbEngine::setupEngine()
qDebug("<setupEngine ok=%d", ok);
if (!ok) {
showMessage(errorMessage, LogError);
showMessageBox(QMessageBox::Critical, tr("Failed to Start the Debugger"), errorMessage);
Core::AsynchronousMessageBox::critical(tr("Failed to Start the Debugger"), errorMessage);
STATE_DEBUG(state(), Q_FUNC_INFO, __LINE__, "notifyEngineSetupFailed")
notifyEngineSetupFailed();
}
......
......@@ -52,6 +52,7 @@
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <coreplugin/progressmanager/progressmanager.h>
#include <coreplugin/progressmanager/futureprogress.h>
......@@ -72,8 +73,6 @@
#include <QFileInfo>
#include <QDir>
#include <QMessageBox>
using namespace Core;
using namespace Debugger::Internal;
using namespace ProjectExplorer;
......@@ -1733,7 +1732,7 @@ void DebuggerEngine::showStoppedBySignalMessageBox(QString meaning, QString name
"<table><tr><td>Signal name : </td><td>%1</td></tr>"
"<tr><td>Signal meaning : </td><td>%2</td></tr></table>")
.arg(name, meaning);
showMessageBox(QMessageBox::Information, tr("Signal received"), msg);
Core::AsynchronousMessageBox::information(tr("Signal received"), msg);
}
void DebuggerEngine::showStoppedByExceptionMessageBox(const QString &description)
......@@ -1741,7 +1740,7 @@ void DebuggerEngine::showStoppedByExceptionMessageBox(const QString &description
const QString msg =
tr("<p>The inferior stopped because it triggered an exception.<p>%1").
arg(description);
showMessageBox(QMessageBox::Information, tr("Exception Triggered"), msg);
Core::AsynchronousMessageBox::information(tr("Exception Triggered"), msg);
}
void DebuggerEngine::openMemoryView(quint64 startAddr, unsigned flags,
......@@ -1897,7 +1896,7 @@ void DebuggerEngine::validateExecutable(DebuggerStartParameters *sp)
return;
}
if (warnOnRelease) {
showMessageBox(QMessageBox::Information, tr("Warning"),
Core::AsynchronousMessageBox::information(tr("Warning"),
tr("This does not seem to be a \"Debug\" build.\n"
"Setting breakpoints by file name and line number may fail.")
+ QLatin1Char('\n') + detailedWarning);
......
......@@ -42,7 +42,6 @@
QT_BEGIN_NAMESPACE
class QDebug;
class QPoint;
class QMessageBox;
class QAbstractItemModel;
QT_END_NAMESPACE
......
......@@ -78,6 +78,7 @@
#include <coreplugin/imode.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/modemanager.h>
......@@ -1589,8 +1590,8 @@ DebuggerRunControl *DebuggerPluginPrivate::attachToRunningProcess(Kit *kit,
IDevice::ConstPtr device = DeviceKitInformation::device(kit);
QTC_ASSERT(device, return 0);
if (process.pid == 0) {
QMessageBox::warning(ICore::dialogParent(), tr("Warning"),
tr("Cannot attach to process with PID 0"));
Core::AsynchronousMessageBox::warning(tr("Warning"),
tr("Cannot attach to process with PID 0"));
return 0;
}
......@@ -1598,14 +1599,14 @@ DebuggerRunControl *DebuggerPluginPrivate::attachToRunningProcess(Kit *kit,
if (const ToolChain *tc = ToolChainKitInformation::toolChain(kit))
isWindows = tc->targetAbi().os() == Abi::WindowsOS;
if (isWindows && isWinProcessBeingDebugged(process.pid)) {
QMessageBox::warning(ICore::mainWindow(), tr("Process Already Under Debugger Control"),
Core::AsynchronousMessageBox::warning(tr("Process Already Under Debugger Control"),
tr("The process %1 is already under the control of a debugger.\n"
"Qt Creator cannot attach to it.").arg(process.pid));
return 0;
}
if (device->type() != PE::DESKTOP_DEVICE_TYPE) {
QMessageBox::warning(ICore::mainWindow(), tr("Not a Desktop Device Type"),
Core::AsynchronousMessageBox::warning(tr("Not a Desktop Device Type"),
tr("It is only possible to attach to a locally running process."));
return 0;
}
......
......@@ -30,6 +30,8 @@
#include "coregdbadapter.h"
#include <coreplugin/messagebox.h>
#include <debugger/debuggercore.h>
#include <debugger/debuggerprotocol.h>
#include <debugger/debuggerstartparameters.h>
......@@ -39,7 +41,6 @@
#include <utils/qtcassert.h>
#include <QDir>
#include <QMessageBox>
#include <QTemporaryFile>
using namespace Utils;
......@@ -185,7 +186,7 @@ void GdbCoreEngine::continueSetupEngine()
if (cinfo.isCore) {
m_executable = cinfo.foundExecutableName;
if (m_executable.isEmpty()) {
showMessageBox(QMessageBox::Warning,
Core::AsynchronousMessageBox::warning(
tr("Error Loading Symbols"),
tr("No executable to load symbols from specified core."));
notifyEngineSetupFailed();
......@@ -196,7 +197,7 @@ void GdbCoreEngine::continueSetupEngine()
if (isCore) {
startGdb();
} else {
showMessageBox(QMessageBox::Warning,
Core::AsynchronousMessageBox::warning(
tr("Error Loading Core File"),
tr("The specified file does not appear to be a core file."));
notifyEngineSetupFailed();
......
......@@ -65,6 +65,7 @@
#include <debugger/shared/hostutils.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <projectexplorer/devicesupport/deviceprocess.h>
#include <projectexplorer/itaskhandler.h>
#include <projectexplorer/taskhub.h>
......@@ -1072,7 +1073,7 @@ void GdbEngine::handleResultRecord(GdbResponse *response)
// with helpers enabled. In this case we get a second response with
// msg="Cannot find new threads: generic error"
showMessage(_("APPLYING WORKAROUND #1"));
showMessageBox(QMessageBox::Critical,
Core::AsynchronousMessageBox::critical(
tr("Executable failed"), QString::fromLocal8Bit(msg));
showStatusMessage(tr("Process failed to start"));
//shutdown();
......@@ -1098,7 +1099,7 @@ void GdbEngine::handleResultRecord(GdbResponse *response)
//showStatusMessage(tr("Executable failed: %1")
// .arg(QString::fromLocal8Bit(msg)));
//shutdown();
//showMessageBox(QMessageBox::Critical,
//Core::AsynchronousMessageBox::critical(
// tr("Executable failed"), QString::fromLocal8Bit(msg));
} else if (msg.contains("Cannot insert breakpoint")) {
// For breakpoints set by address to non-existent addresses we
......@@ -1112,7 +1113,7 @@ void GdbEngine::handleResultRecord(GdbResponse *response)
// long as the breakpoints are enabled.
// FIXME: Should we silently disable the offending breakpoints?
showMessage(_("APPLYING WORKAROUND #5"));
showMessageBox(QMessageBox::Critical,
Core::AsynchronousMessageBox::critical(
tr("Setting breakpoints failed"), QString::fromLocal8Bit(msg));
QTC_CHECK(state() == InferiorRunOk);
notifyInferiorSpontaneousStop();
......@@ -1128,7 +1129,7 @@ void GdbEngine::handleResultRecord(GdbResponse *response)
if (!m_lastWinException.isEmpty())
logMsg = m_lastWinException + QLatin1Char('\n');
logMsg += QString::fromLocal8Bit(msg);
showMessageBox(QMessageBox::Critical, tr("Executable Failed"), logMsg);
Core::AsynchronousMessageBox::critical(tr("Executable Failed"), logMsg);
showStatusMessage(tr("Executable failed: %1").arg(logMsg));
}
}
......@@ -1793,7 +1794,7 @@ void GdbEngine::handlePythonSetup(const GdbResponse &response)
QString out1 = _("The selected build of GDB does not support Python scripting.");
QString out2 = _("It cannot be used in Qt Creator.");
showStatusMessage(out1 + QLatin1Char(' ') + out2);
showMessageBox(QMessageBox::Critical, tr("Execution Error"), out1 + _("<br>") + out2);
Core::AsynchronousMessageBox::critical(tr("Execution Error"), out1 + _("<br>") + out2);
}
notifyEngineSetupFailed();
}
......@@ -1801,7 +1802,7 @@ void GdbEngine::handlePythonSetup(const GdbResponse &response)
void GdbEngine::showExecutionError(const QString &message)
{
showMessageBox(QMessageBox::Critical, tr("Execution Error"),
Core::AsynchronousMessageBox::critical(tr("Execution Error"),
tr("Cannot continue debugged process:") + QLatin1Char('\n') + message);
}
......@@ -1933,7 +1934,7 @@ void GdbEngine::handleInferiorShutdown(const GdbResponse &response)
notifyInferiorShutdownOk();
return;
}
showMessageBox(QMessageBox::Critical,
Core::AsynchronousMessageBox::critical(
tr("Failed to shut down application"),
msgInferiorStopFailed(QString::fromLocal8Bit(ba)));
notifyInferiorShutdownFailed();
......@@ -2206,7 +2207,7 @@ void GdbEngine::handleExecuteNext(const GdbResponse &response)
showExecutionError(QString::fromLocal8Bit(msg));
notifyInferiorRunFailed();
} else {
showMessageBox(QMessageBox::Critical, tr("Execution Error"),
Core::AsynchronousMessageBox::critical(tr("Execution Error"),
tr("Cannot continue debugged process:") + QLatin1Char('\n') + QString::fromLocal8Bit(msg));
notifyInferiorIll();
}
......@@ -3061,7 +3062,7 @@ void GdbEngine::handleShowModuleSymbols(const GdbResponse &response)
file.remove();
Internal::showModuleSymbols(modulePath, symbols);
} else {
showMessageBox(QMessageBox::Critical, tr("Cannot Read Symbols"),
Core::AsynchronousMessageBox::critical(tr("Cannot Read Symbols"),
tr("Cannot read symbols for module \"%1\".").arg(fileName));
}
}
......@@ -3528,7 +3529,7 @@ void GdbEngine::createSnapshot()
postCommand("gcore " + fileName.toLocal8Bit(),
NeedsStop|ConsoleCommand, CB(handleMakeSnapshot), fileName);
} else {
showMessageBox(QMessageBox::Critical, tr("Snapshot Creation Error"),
Core::AsynchronousMessageBox::critical(tr("Snapshot Creation Error"),
tr("Cannot create snapshot file."));
}
}
......@@ -3551,7 +3552,7 @@ void GdbEngine::handleMakeSnapshot(const GdbResponse &response)
DebuggerRunControlFactory::createAndScheduleRun(sp);
} else {
QByteArray msg = response.data["msg"].data();
showMessageBox(QMessageBox::Critical, tr("Snapshot Creation Error"),
Core::AsynchronousMessageBox::critical(tr("Snapshot Creation Error"),
tr("Cannot create snapshot:") + QLatin1Char('\n') + QString::fromLocal8Bit(msg));
}
}
......@@ -4299,7 +4300,7 @@ void GdbEngine::loadInitScript()
if (QFileInfo(script).isReadable()) {
postCommand("source " + script.toLocal8Bit());
} else {
showMessageBox(QMessageBox::Warning,
Core::AsynchronousMessageBox::warning(
tr("Cannot find debugger initialization script"),
tr("The debugger settings point to a script file at \"%1\" "
"which is not accessible. If a script file is not needed, "
......@@ -4336,7 +4337,7 @@ void GdbEngine::handleGdbError(QProcess::ProcessError error)
default:
//m_gdbProc->kill();
//notifyEngineIll();
showMessageBox(QMessageBox::Critical, tr("GDB I/O Error"), msg);
Core::AsynchronousMessageBox::critical(tr("GDB I/O Error"), msg);
break;
}
}
......@@ -4364,7 +4365,7 @@ void GdbEngine::handleGdbFinished(int code, QProcess::ExitStatus type)
const QString msg = type == QProcess::CrashExit ?
tr("The gdb process terminated.") :
tr("The gdb process terminated unexpectedly (code %1)").arg(code);
showMessageBox(QMessageBox::Critical, tr("Unexpected GDB Exit"), msg);
Core::AsynchronousMessageBox::critical(tr("Unexpected GDB Exit"), msg);
break;
}
}
......@@ -4531,7 +4532,7 @@ void GdbEngine::notifyInferiorSetupFailed(const QString &msg)
return; // Adapter crashed meanwhile, so this notification is meaningless.
}
showMessage(_("INFERIOR START FAILED"));
showMessageBox(QMessageBox::Critical, tr("Failed to start application"), msg);
Core::AsynchronousMessageBox::critical(tr("Failed to start application"), msg);
DebuggerEngine::notifyInferiorSetupFailed();
}
......@@ -4553,7 +4554,7 @@ void GdbEngine::handleAdapterCrashed(const QString &msg)
m_gdbProc->kill();
if (!msg.isEmpty())
showMessageBox(QMessageBox::Critical, tr("Adapter crashed"), msg);
Core::AsynchronousMessageBox::critical(tr("Adapter crashed"), msg);
}
void GdbEngine::createFullBacktrace()
......
......@@ -38,12 +38,13 @@
#include <debugger/debuggerstartparameters.h>
#include <debugger/debuggerstringutils.h>
#include <coreplugin/messagebox.h>
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <utils/qtcprocess.h>
#include <QFileInfo>
#include <QMessageBox>
namespace Debugger {
namespace Internal {
......@@ -130,7 +131,7 @@ void GdbRemoteServerEngine::uploadProcError(QProcess::ProcessError error)
}
showMessage(msg, StatusBar);
showMessageBox(QMessageBox::Critical, tr("Error"), msg);
Core::AsynchronousMessageBox::critical(tr("Error"), msg);
}
void GdbRemoteServerEngine::readUploadStandardOutput()
......
......@@ -37,6 +37,7 @@
#include <debugger/debuggerstartparameters.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <projectexplorer/kitchooser.h>
#include <projectexplorer/devicesupport/deviceprocesslist.h>
#include <projectexplorer/devicesupport/deviceprocessesdialog.h>
......@@ -45,7 +46,6 @@
#include <utils/portlist.h>
#include <utils/qtcassert.h>
#include <QMessageBox>
#include <QFileInfo>
using namespace Core;
......@@ -90,7 +90,7 @@ GdbServerStarter::~GdbServerStarter()
void GdbServerStarter::handleRemoteError(const QString &errorMsg)
{
QMessageBox::critical(0, tr("Remote Error"), errorMsg);
Core::AsynchronousMessageBox::critical(tr("Remote Error"), errorMsg);
}
void GdbServerStarter::portGathererError(const QString &text)
......@@ -191,7 +191,7 @@ void GdbServerStarter::attach(int port)
localExecutable = candidate;
}
if (localExecutable.isEmpty()) {
QMessageBox::warning(ICore::mainWindow(), tr("Warning"),
Core::AsynchronousMessageBox::warning(tr("Warning"),
tr("Cannot find local executable for remote process \"%1\".")
.arg(d->process.exe));
return;
......@@ -199,7 +199,7 @@ void GdbServerStarter::attach(int port)
QList<Abi> abis = Abi::abisOfBinary(Utils::FileName::fromString(localExecutable));
if (abis.isEmpty()) {
QMessageBox::warning(ICore::mainWindow(), tr("Warning"),
Core::AsynchronousMessageBox::warning(tr("Warning"),
tr("Cannot find ABI for remote process \"%1\".")
.arg(d->process.exe));
return;
......
......@@ -39,8 +39,7 @@
#include <utils/hostosinfo.h>
#include <utils/qtcassert.h>
#include <coreplugin/icore.h>
#include <QMessageBox>
#include <coreplugin/messagebox.h>
using namespace Utils;
......@@ -188,7 +187,7 @@ void GdbTermEngine::interruptInferior2()
void GdbTermEngine::stubError(const QString &msg)
{
showMessageBox(QMessageBox::Critical, tr("Debugger Error"), msg);
Core::AsynchronousMessageBox::critical(tr("Debugger Error"), msg);
}
void GdbTermEngine::stubExited()
......
......@@ -55,6 +55,7 @@
#include <utils/qtcprocess.h>
#include <texteditor/texteditor.h>
#include <coreplugin/messagebox.h>
#include <coreplugin/idocument.h>
#include <coreplugin/icore.h>
......@@ -66,7 +67,6 @@
#include <QVariant>
#include <QApplication>
#include <QMessageBox>
#include <QToolTip>
using namespace Utils;
......@@ -949,7 +949,7 @@ void LldbEngine::handleLldbError(QProcess::ProcessError error)
default:
//setState(EngineShutdownRequested, true);
m_lldbProc.kill();
showMessageBox(QMessageBox::Critical, tr("LLDB I/O Error"),
Core::AsynchronousMessageBox::critical(tr("LLDB I/O Error"),
errorMessage(error));
break;
}
......@@ -1441,7 +1441,7 @@ void LldbEngine::stubStarted()
void LldbEngine::stubError(const QString &msg)
{
showMessageBox(QMessageBox::Critical, tr("Debugger Error"), msg);
Core::AsynchronousMessageBox::critical(tr("Debugger Error"), msg);
}
void LldbEngine::stubExited()
......
......@@ -40,13 +40,12 @@
#include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/messagebox.h>
#include <utils/qtcassert.h>
#include <extensionsystem/pluginmanager.h>
#include <extensionsystem/invoker.h>
#include <QMessageBox>
#include <cstring>
using namespace Core;
......@@ -197,7 +196,7 @@ void MemoryAgent::createBinEditor(quint64 addr, unsigned flags,
const QString &title, QWidget *parent)
{
if (!doCreateBinEditor(addr, flags, ml, pos, title, parent))
showMessageBox(QMessageBox::Warning,
Core::AsynchronousMessageBox::warning(
tr("No Memory Viewer Available"),
tr("The memory contents cannot be shown as no viewer plugin "
"for binary data has been loaded."));
......
......@@ -52,6 +52,7 @@
#include <texteditor/texteditor.h>
#include <coreplugin/idocument.h>
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <QDateTime>
#include <QDebug>
......@@ -61,7 +62,6 @@
#include <QVariant>
#include <QApplication>
#include <QMessageBox>
#include <QToolTip>
......@@ -198,7 +198,7 @@ void PdbEngine::setupInferior()
QString fileName = QFileInfo(startParameters().executable).absoluteFilePath();
QFile scriptFile(fileName);
if (!scriptFile.open(QIODevice::ReadOnly|QIODevice::Text)) {
showMessageBox(QMessageBox::Critical, tr("Python Error"),
Core::AsynchronousMessageBox::critical(tr("Python Error"),
_("Cannot open script file %1:\n%2").
arg(fileName, scriptFile.errorString()));
notifyInferiorSetupFailed();
......@@ -555,8 +555,8 @@ void PdbEngine::handlePdbError(QProcess::ProcessError error)
default:
//setState(EngineShutdownRequested, true);
m_pdbProc.kill();
showMessageBox(QMessageBox::Critical, tr("Pdb I/O Error"),
errorMessage(error));
Core::AsynchronousMessageBox::critical(tr("Pdb I/O Error"),
errorMessage(error));
break;
}
}
......
......@@ -37,8 +37,9 @@
#include <debugger/debuggerstringutils.h>
#include <qmldebug/qmldebugclient.h>
#include <coreplugin/messagebox.h>
#include <QFileInfo>
#include <QMessageBox>
#include <utils/qtcassert.h>
using QmlDebug::QmlDebugStream;
......@@ -448,7 +449,7 @@ void QScriptDebuggerClient::messageReceived(const QByteArray &data)
.arg(error.toHtmlEscaped())
: tr("<p>An uncaught exception occurred in \"%1\":</p><p>%2</p>")
.arg(QLatin1String(stackFrames.value(0).fileUrl), error.toHtmlEscaped());
showMessageBox(QMessageBox::Information, tr("Uncaught Exception"), msg);
Core::AsynchronousMessageBox::information(tr("Uncaught Exception"), msg);
} else {
QString file;
int line = -1;
......
......@@ -31,6 +31,7 @@
#include "cdbsymbolpathlisteditor.h"
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
#include <utils/pathchooser.h>
#include <utils/checkablemessagebox.h>
......@@ -98,15 +99,15 @@ void CacheDirectoryDialog::accept()
}
// Does a file of the same name exist?
if (fi.exists()) {
QMessageBox::warning(this, tr("Already Exists"),
tr("A file named \"%1\" already exists.").arg(cache));
Core::AsynchronousMessageBox::warning(tr("Already Exists"),
tr("A file named \"%1\" already exists.").arg(cache));
return;
}
// Create
QDir root(QDir::root());
if (!root.mkpath(cache)) {
QMessageBox::warning(this, tr("Cannot Create"),
tr("The folder \"%1\" could not be created.").arg(cache));
Core::AsynchronousMessageBox::warning(tr("Cannot Create"),
tr("The folder \"%1\" could not be created.").arg(cache));
return;
}
QDialog::accept();
......
......@@ -37,6 +37,7 @@
#include "debuggerdialogs.h"
#include "memoryagent.h"
#include <coreplugin/messagebox.h>
#include <utils/savedaction.h>
......@@ -50,7 +51,6 @@
#include <QContextMenuEvent>
#include <QInputDialog>
#include <QFileDialog>
#include <QMessageBox>
#include <QMenu>
namespace Debugger {
......@@ -127,7 +127,7 @@ void saveTaskFile(QWidget *parent, const StackHandler *sh)
const QString fileName = fileDialog.selectedFiles().front();
file.setFileName(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::warning(parent, StackTreeView::tr("Cannot Open Task File"),
Core::AsynchronousMessageBox::warning(StackTreeView::tr("Cannot Open Task File"),
StackTreeView::tr("Cannot open \"%1\": %2").arg(QDir::toNativeSeparators(fileName), file.errorString()));
}
}
......
......@@ -44,6 +44,8 @@
#include <texteditor/syntaxhighlighter.h>
#include <coreplugin/messagebox.h>
#include <utils/qtcassert.h>
#include <utils/savedaction.h>
#include <utils/fancylineedit.h>
......@@ -55,7 +57,6 @@
#include <QInputDialog>
#include <QItemDelegate>
#include <QMenu>
#include <QMessageBox>
#include <QMetaProperty>
#include <QMimeData>
#include <QScrollBar>
......@@ -436,7 +437,7 @@ static void addStackLayoutMemoryView(DebuggerEngine *engine, bool separateView,
end += 8 - remainder;
// Anything found and everything in a sensible range (static data in-between)?
if (end <= start || end - start > 100 * 1024) {
QMessageBox::information(parent,
Core::AsynchronousMessageBox::information(
WatchTreeView::tr("Cannot Display Stack Layout"),
WatchTreeView::tr("Could not determine a suitable address range."));
return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment