123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include "mainwindow.h"
- #include <QApplication>
- #include <QResource>
- #include <QDebug>
- #include <signal.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <QMessageBox>
- MainWindow *wnd;
- // Absturtz Handler zum speichern der Annotationen
- void segfault_sigaction(int signal, siginfo_t *si, void *arg)
- {
- if( wnd->getSequenz() )
- {
- QMessageBox::StandardButton reply =
- QMessageBox::question(0, "Fehler", QString( "Es ist ein unerwarteter Fehler aufgetreten und das Programm muss "
- "geschlossen werden (Zugriffsfehler auf Speicheradresse " ) +
- QString("0x%1").arg((quintptr)si->si_addr, QT_POINTER_SIZE * 2, 16, QChar('0')) + "). Möchten sie die Annotationen speichern?",
- QMessageBox::Yes|QMessageBox::No);
- if (reply == QMessageBox::Yes) {
- wnd->getSequenz()->saveToPath( 0 );
- }
- }
- exit(0);
- }
- void doStuff(int argc, char *argv[])
- {
- QResource::registerResource("icons.rcc");
- QApplication a(argc, argv);
- MainWindow w( &a );
- wnd = &w;
- struct sigaction sa;
- memset(&sa, 0, sizeof(struct sigaction));
- sigemptyset(&sa.sa_mask);
- sa.sa_sigaction = segfault_sigaction;
- sa.sa_flags = SA_SIGINFO;
- sigaction(SIGSEGV, &sa, 0);
- w.show();
- a.exec();
- }
- // Start des Programms
- int main(int argc, char *argv[])
- {
- numObjects = 0;
- doStuff(argc, argv);
- qDebug() << "Number of counted memory leaks: " << numObjects;
- return 0;
- }
|