From e10639753d7dbd368f5edc2555d75c4b5905ba3b Mon Sep 17 00:00:00 2001 From: Pixel Date: Mon, 21 Nov 2011 13:27:53 -0800 Subject: GeneralException() will now trace the callstack and store this, for debugging purposes. --- includes/Exceptions.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'includes/Exceptions.h') diff --git a/includes/Exceptions.h b/includes/Exceptions.h index 0563090..c397265 100644 --- a/includes/Exceptions.h +++ b/includes/Exceptions.h @@ -3,22 +3,27 @@ #include #include #include +#include namespace Balau { class GeneralException { public: - GeneralException(const char * msg) : m_msg(::strdup(msg)) { } - GeneralException(const String & msg) : m_msg(msg.strdup()) { } - GeneralException(const GeneralException & e) : m_msg(strdup(e.m_msg)) { } + GeneralException(const char * msg) : m_msg(::strdup(msg)) { genTrace(); } + GeneralException(const String & msg) : m_msg(msg.strdup()) { genTrace(); } + GeneralException(const GeneralException & e) : m_msg(strdup(e.m_msg)), m_trace(e.m_trace) { } ~GeneralException() { if (m_msg) free(m_msg); } const char * getMsg() const { return m_msg; } + const std::vector getTrace() const { return m_trace; } protected: GeneralException() : m_msg(0) { } void setMsg(char * msg) { if (m_msg) free(m_msg); m_msg = msg; } + void genTrace(); + private: char * m_msg; + std::vector m_trace; }; static inline void * malloc(size_t size) throw (GeneralException) { -- cgit v1.2.3