+ ofs.close();
+ ifs.close();
+
+ QFile f(stacktrace_outfile);
+ f.open(QFile::ReadOnly | QFile::Text);
+ QTextStream fs(&f);
+ QString stacktrace = fs.readAll();
+ stacktrace = stacktrace.trimmed().replace('\n', "<br />");
+
+ qDebug() << QObject::tr("Stack trace of previous crash:");
+ qDebug() << "---------------------------------------------------------";
+ // Note: qDebug() prints quotation marks for QString output, so we feed it char*
+ qDebug() << stacktrace.toLocal8Bit().data();
+ qDebug() << "---------------------------------------------------------";
+
+ f.close();
+
+ // Remove stack trace so we don't process it again the next time we run
+ QFile::remove(stacktrace_filename.toLocal8Bit().data());
+
+ // Show notification dialog if permitted
+ pv::GlobalSettings settings;
+ if (settings.value(pv::GlobalSettings::Key_Log_NotifyOfStacktrace).toBool()) {
+ QCheckBox *cb = new QCheckBox(QObject::tr("Don't show this message again"));
+
+ QMessageBox msgbox;
+ msgbox.setText(QObject::tr("When %1 last crashed, it created a stack trace.\n" \
+ "A human-readable form has been saved to disk and was written to " \
+ "the log. You may access it from the settings dialog.").arg(PV_TITLE));
+ msgbox.setIcon(QMessageBox::Icon::Information);
+ msgbox.addButton(QMessageBox::Ok);
+ msgbox.setCheckBox(cb);
+
+ QObject::connect(cb, &QCheckBox::stateChanged, [](int state){
+ pv::GlobalSettings settings;
+ settings.setValue(pv::GlobalSettings::Key_Log_NotifyOfStacktrace,
+ !state); });
+
+ msgbox.exec();
+ }
+}
+#endif
+
+void usage()
+{
+ fprintf(stdout,
+ "Usage:\n"
+ " %s [OPTIONS] [FILE]\n"
+ "\n"
+ "Help Options:\n"
+ " -h, -?, --help Show help option\n"
+ "\n"
+ "Application Options:\n"
+ " -V, --version Show release version\n"
+ " -l, --loglevel Set libsigrok/libsigrokdecode loglevel\n"
+ " -d, --driver Specify the device driver to use\n"
+ " -D, --dont-scan Don't auto-scan for devices, use -d spec only\n"
+ " -i, --input-file Load input from file\n"
+ " -I, --input-format Input format\n"
+ " -c, --clean Don't restore previous sessions on startup\n"
+ "\n", PV_BIN_NAME);