forked from qt-creator/qt-creator
Linux: Add a crash handler providing a backtrace for debug builds.
Use case: You're working with a debug version of Qt Creator and you're interested in getting a backtrace displayed as soon as Qt Creator crashes without searching for the core file, starting your debugger, ... Once a 'serious signal' (currently SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGPIPE) is delivered, a popup displays the following debug information: - Qt Creator version (same as in the about dialog) - Kernel version (uname -a) - GNU/Linux Distribution (/etc/lsb-release) - Backtrace (by gdb) Please note that this crash handler is built and used only in debug mode on GNU/Linux. It's solely meant as a convenience tool for the developer. In contrast to the breakpad integration, this crash handler operates 'offline'. There is no network i/o involved. Change-Id: Idcfb1bf1ad68942615ecfe0dffc0d03154455049 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com> Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
**************************************************************************/
|
||||
|
||||
#include "qtsingleapplication.h"
|
||||
#include "../tools/qtcreatorcrashhandler/crashhandlersetup.h"
|
||||
|
||||
#include <app/app_version.h>
|
||||
#include <extensionsystem/iplugin.h>
|
||||
@@ -228,6 +229,8 @@ int main(int argc, char **argv)
|
||||
const int threadCount = QThreadPool::globalInstance()->maxThreadCount();
|
||||
QThreadPool::globalInstance()->setMaxThreadCount(qMax(4, 2 * threadCount));
|
||||
|
||||
setupCrashHandler(); // Display a backtrace once a serious signal is delivered.
|
||||
|
||||
#ifdef ENABLE_QT_BREAKPAD
|
||||
QtSystemExceptionHandler systemExceptionHandler;
|
||||
#endif
|
||||
@@ -432,5 +435,7 @@ int main(int argc, char **argv)
|
||||
QTimer::singleShot(100, &pluginManager, SLOT(startTests()));
|
||||
#endif
|
||||
|
||||
return app.exec();
|
||||
const int r = app.exec();
|
||||
cleanupCrashHandler();
|
||||
return r;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user