Fixed guards
[distributed.git] / src / libs / misc / debug.h
blobab26d9703ab5afcb627a23d4f2da567bd45245c6
1 //
2 // Copyright (C) 2008 Francesco Salvestrini
3 //
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License along
15 // with this program; if not, write to the Free Software Foundation, Inc.,
16 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #ifndef LIBS_MISC_DEBUG_H
20 #define LIBS_MISC_DEBUG_H
22 #include "config.h"
24 #include <cassert>
25 #include <cstdlib>
27 #include "libs/misc/trace.h"
29 extern void backtrace_dump(void);
31 #define ABORT() { \
32 backtrace_dump(); \
33 TR_CRT("\n"); \
34 TR_CRT("Please report to <%s>\n", PACKAGE_BUGREPORT); \
35 abort(); \
38 #define BUG() { \
39 TR_CRT("Bug hit in '%s' (%s:%d)\n", \
40 __PRETTY_FUNCTION__, __FILE__, __LINE__); \
41 TR_CRT("\n"); \
42 ABORT(); \
45 #define BUG_ON(X) { \
46 if (X) { \
47 TR_CRT("Unsatisfied condition '%s' in '%s' (%s:%d)\n", \
48 #X, __PRETTY_FUNCTION__, __FILE__, __LINE__); \
49 TR_CRT("\n"); \
50 ABORT(); \
51 } \
54 #define MISSING_CODE() { \
55 TR_DBG("Missing code in '%s' (%s:%d)\n", \
56 __PRETTY_FUNCTION__, __FILE__, __LINE__); \
59 #endif // LIBS_MISC_DEBUG_H