From 57bbb6651bfc10d9f2404164e3303c3376dfc62c Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Tue, 4 Mar 2008 19:26:24 +0000 Subject: Added backtrace support to the Exception system. It's pretty simple, if it's enabled, and the compiler/libc support it, then you just get backtraces, if not you get a message about it not being supported. It probably shouldn't be enabled in most production environments, since it does happen for every exception, and could be memory and time consuming. --- src/exceptionbase.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/exceptionbase.h') diff --git a/src/exceptionbase.h b/src/exceptionbase.h index 391e41d..4d1d2ff 100644 --- a/src/exceptionbase.h +++ b/src/exceptionbase.h @@ -12,6 +12,12 @@ #include #include +// This shouldn't normally be defined here, I don't think it's all that portable +// and it also changes the class interface, we should find out how much of +// an issue that is, we could just put in an empty getBacktrace() function for +// when you don't have support for it... +#define LIBBU_EXCEPTION_BACKTRACE + namespace Bu { /** @@ -83,9 +89,15 @@ namespace Bu */ void setWhat( const char *lpText ); + const char *getBacktrace() const throw(); + private: int nErrorCode; /**< The code for the error that occured. */ char *sWhat; /**< The text string telling people what went wrong. */ +#ifdef LIBBU_EXCEPTION_BACKTRACE + char *sBT; /**< The backtrace text. */ + void createBacktrace(); +#endif }; } -- cgit v1.2.3