00001
00016 #ifndef CXXUTILS_SEAL_DEBUG_H // wlav SEAL_BASE_DEBUG_H
00017 #define CXXUTILS_SEAL_DEBUG_H // wlav SEAL_BASE_DEBUG_H
00018
00019
00020
00021 #include "CxxUtils/SealCommon.h"
00022
00023
00024 # include <cstddef>
00025
00026
00027
00028 # ifdef _WIN32
00029 # define STDERR_HANDLE GetStdHandle (STD_ERROR_HANDLE)
00030 # else
00031 # define STDERR_HANDLE STDERR_FILENO
00032 # endif
00033
00034
00035
00036
00037 # ifdef _WIN32
00038 # define MYWRITE(fd,data,n) do { DWORD written; WriteFile(fd,data,n,\
00039 &written,0); } while (0)
00040 # else
00041 # define MYWRITE(fd,data,n) write(fd,data,n)
00042 # endif
00043
00044
00045
00046 namespace Athena {
00047
00048
00049
00050
00051
00052
00054 class DebugAids
00055 {
00056 public:
00057
00058 static IOFD stacktraceFd (IOFD fd = IOFD_INVALID);
00059 static void stacktrace (IOFD fd = IOFD_INVALID);
00060 static void coredump (int sig, ...);
00061
00062 static void stacktraceLine (IOFD fd,
00063 unsigned long addr);
00064 static void setStackTraceAddr2Line (const char* path);
00065
00066 private:
00067 static IOFD s_stackTraceFd;
00068 };
00069
00070
00071
00072
00073
00074
00075 }
00076 #endif // CXXUTILS_SEAL_DEBUG_H wlav SEAL_BASE_DEBUG_H