Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F1494095
debug.hpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Size
3 KB
Referenced Files
None
Subscribers
None
debug.hpp
View Options
/*******************************************************************************
*
* File: debug.hpp
*
* Contents: Facility for debugging
*
* Copyright 2017
*
* Author: David Juhasz (david.juhasz@tuwien.ac.at)
*
******************************************************************************/
#ifndef _ROSA__SUPPORT_DEBUG_HPP_
#define _ROSA__SUPPORT_DEBUG_HPP_
#include
"rosa/support/types.hpp"
#include
<ostream>
#include
<array>
namespace
rosa
{
// Returns an output stream to use for debugging.
std
::
ostream
&
dbgs
(
void
);
// Prints an array to the ostream.
template
<
typename
T
,
size_t
size
>
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
std
::
array
<
T
,
size
>
&
arr
)
{
os
<<
'['
;
for
(
unsigned
i
=
0
;
i
<
size
;
++
i
)
{
if
(
i
)
{
os
<<
','
;
}
os
<<
(
PRINTABLE
(
T
))
arr
[
i
];
}
os
<<
']'
;
return
os
;
}
}
// End namespace rosa
#ifndef ROSA_ENABLE_ASSERTIONS
#define ASSERT(unused) static_cast<void>(0)
#elif defined(ROSA_WINDOWS)
#define ASSERT(stmt) \
if (static_cast<bool>(stmt) == false) { \
rosa::dbgs() << __FILE__ << ":" << __LINE__ << ": requirement failed '" \
<< #stmt << "'" << std::endl; \
::abort(); \
} \
static_cast<void>(0)
#else
// defined(ROSA_LINUX)
#include
<execinfo.h>
#define ASSERT(stmt) \
if (static_cast<bool>(stmt) == false) { \
rosa::dbgs() << __FILE__ << ":" << __LINE__ << ": requirement failed '" \
<< #stmt << "'" << std::endl; \
void *array[20]; \
auto bt_size = ::backtrace(array, 20); \
::backtrace_symbols_fd(array, bt_size, 2); \
::abort(); \
} \
static_cast<void>(0)
#endif
// defined(ROSA_ENABLE_ASSERTIONS)
#ifndef NDEBUG
#define DEBUG(X) \
do { \
X; \
} while (0)
#define DEBUGVAR(V) \
do { \
rosa::dbgs() << #V << " (" << __FILE__ << ":" << __LINE__ << "): " << (V) \
<< std::endl; \
} while (0)
#else
// defined(NDEBUG)
#define DEBUG(X) static_cast<void>(0)
#define DEBUGVAR(X) static_cast<void>(0)
#endif
// defined(NDEBUG)
#endif
// _ROSA__SUPPORT_DEBUG_HPP_
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Sun, Mar 1, 6:31 PM (1 d, 19 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
288989
Default Alt Text
debug.hpp (3 KB)
Attached To
Mode
R20 SoC_Rosa_repo
Attached
Detach File
Event Timeline
Log In to Comment