diff options
author | hjk <qtc-committer@nokia.com> | 2009-08-13 14:33:02 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-08-13 15:01:57 +0200 |
commit | 6fd0433cd6593882eeeb899d43ca01de50b95829 (patch) | |
tree | e3e7bc19b7a0dc91645219db913a1f32bd0c79fa /src/plugins/debugger/gdb/gdbengine.cpp | |
parent | 21c3e014b995626398d16e0e7d2f642754ef1cec (diff) | |
download | qt-creator-6fd0433cd6593882eeeb899d43ca01de50b95829.tar.gz |
debugger: pop up a window when the application receives a signal like SIGSEGV
Just mentioning it in the status bar is often not enough to take notice.
Diffstat (limited to 'src/plugins/debugger/gdb/gdbengine.cpp')
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index d7ab3f5939..a327bf9ad5 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -790,7 +790,7 @@ void GdbEngine::handleResultRecord(const GdbResultRecord &record) if (record.token < m_oldestAcceptableToken && (cmd.flags & Discardable)) { //qDebug() << "### SKIPPING OLD RESULT" << record.toString(); - //QMessageBox::information(m_mainWindow, tr("Skipped"), "xxx"); + //QMessageBox::information(q->mainWindow(), tr("Skipped"), "xxx"); return; } @@ -1186,6 +1186,19 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data) } } #endif + if (reason == "signal-received" + && theDebuggerBoolSetting(UseMessageBoxForSignals)) { + QByteArray name = data.findChild("signal-name").data(); + QByteArray meaning = data.findChild("signal-meaning").data(); + QString msg = tr("<p>The inferior stopped because it received a " + "signal from the Operating System.<p>" + "<table><tr><td>Signal name : </td><td>%1</td></tr>" + "<tr><td>Signal meaning : </td><td>%2</td></tr></table>") + .arg(name.isEmpty() ? tr(" <Unknown> ") : _(name)) + .arg(meaning.isEmpty() ? tr(" <Unknown> ") : _(meaning)); + QMessageBox::information(q->mainWindow(), tr("Signal received"), msg); + } + if (reason.isEmpty()) q->showStatusMessage(tr("Stopped.")); else @@ -1295,11 +1308,11 @@ void GdbEngine::handleShowVersion(const GdbResultRecord &response, const QVarian "Using gdb 6.7 or later is strongly recommended."); #if 0 // ugly, but 'Show again' check box... - static QErrorMessage *err = new QErrorMessage(m_mainWindow); + static QErrorMessage *err = new QErrorMessage(q->mainWindow()); err->setMinimumSize(400, 300); err->showMessage(msg); #else - //QMessageBox::information(m_mainWindow, tr("Warning"), msg); + //QMessageBox::information(q->mainWindow(), tr("Warning"), msg); #endif } else { m_gdbVersion = 10000 * supported.cap(2).toInt() |