Skip to content

Commit 9e21b17

Browse files
committed
debugging improvements:
- use versioned class variables in QgsApplication (multiple version of qgis_core don't conflict) - QgsLogger: log message to file before writing before invoking the message handler - on linux: produce backtrace on fatal errors
1 parent 26778bf commit 9e21b17

File tree

4 files changed

+120
-107
lines changed

4 files changed

+120
-107
lines changed

src/app/main.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ typedef SInt32 SRefCon;
7474
#include "qgsrectangle.h"
7575
#include "qgslogger.h"
7676

77+
#if defined(linux)
78+
#include <execinfo.h>
79+
#endif
80+
7781
// (if Windows/Mac, use icon from resource)
7882
#if ! defined(Q_WS_WIN) && ! defined(Q_WS_MAC)
7983
#include "../../images/themes/default/qgis.xpm" // Linux
@@ -182,8 +186,15 @@ void myMessageOutput( QtMsgType type, const char *msg )
182186

183187
break;
184188
case QtFatalMsg:
185-
fprintf( stderr, "Fatal: %s\n", msg );
189+
{
190+
fprintf( stderr, "Fatal: %s\nStacktrace (run through c++filt):\n", msg );
191+
#ifdef linux
192+
void *buffer[256];
193+
int nptrs = backtrace( buffer, sizeof( buffer ) / sizeof( *buffer ) );
194+
backtrace_symbols_fd( buffer, nptrs, STDERR_FILENO );
195+
#endif
186196
abort(); // deliberately core dump
197+
}
187198
}
188199
}
189200

0 commit comments

Comments
 (0)