added manual crash trigger for handling testing

This commit is contained in:
itsmattkc
2021-09-30 16:04:57 -07:00
parent 4540304222
commit 34004bbf10
3 changed files with 35 additions and 1 deletions
+16 -1
View File
@@ -169,6 +169,20 @@ void Core::Start()
qInfo() << "Headless pre-cache is not fully implemented yet"; qInfo() << "Headless pre-cache is not fully implemented yet";
break; break;
} }
// Manual crash triggering
if (core_params_.crash_on_startup()) {
const int interval = 5000;
qInfo() << "Manual crash was triggered. Application will crash in" << interval << "ms";
QTimer *crash_timer = new QTimer(this);
crash_timer->setInterval(interval);
connect(crash_timer, &QTimer::timeout, this, []{
// Try to read invalid memory to crash the application
int *invalid_ptr = nullptr;
qDebug() << *invalid_ptr;
});
crash_timer->start();
}
} }
void Core::Stop() void Core::Stop()
@@ -1628,7 +1642,8 @@ void Core::OpenProject()
Core::CoreParams::CoreParams() : Core::CoreParams::CoreParams() :
mode_(kRunNormal), mode_(kRunNormal),
run_fullscreen_(false) run_fullscreen_(false),
crash_(false)
{ {
} }
+12
View File
@@ -104,6 +104,16 @@ public:
startup_language_ = s; startup_language_ = s;
} }
bool crash_on_startup() const
{
return crash_;
}
void set_crash_on_startup(bool e)
{
crash_ = true;
}
private: private:
RunMode mode_; RunMode mode_;
@@ -113,6 +123,8 @@ public:
bool run_fullscreen_; bool run_fullscreen_;
bool crash_;
}; };
/** /**
+7
View File
@@ -133,6 +133,9 @@ int main(int argc, char *argv[])
parser.AddOption({QStringLiteral("stylesheet")}, QString(), true, QString(), true); parser.AddOption({QStringLiteral("stylesheet")}, QString(), true, QString(), true);
parser.AddOption({QStringLiteral("widgetcount")}, QString(), false, QString(), true); parser.AddOption({QStringLiteral("widgetcount")}, QString(), false, QString(), true);
// Hidden crash option for debugging the crash handling
auto crash_option = parser.AddOption({QStringLiteral("-crash")}, QString(), true, QString(), true);
parser.Process(argc, argv); parser.Process(argc, argv);
if (help_option->IsSet()) { if (help_option->IsSet()) {
@@ -159,6 +162,10 @@ int main(int argc, char *argv[])
} }
} }
if (crash_option->IsSet()) {
startup_params.set_crash_on_startup(true);
}
startup_params.set_fullscreen(fullscreen_option->IsSet()); startup_params.set_fullscreen(fullscreen_option->IsSet());
startup_params.set_startup_project(project_argument->GetSetting()); startup_params.set_startup_project(project_argument->GetSetting());