Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F27036102
debug.hpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Authored By
Unknown
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/config/config.h"
#include
"rosa/support/types.hpp"
#include
<array>
#include
<ostream>
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(stmt) ROSA_IGNORE_UNUSED(stmt)
#elif defined(ROSA_WINDOWS)
#define ASSERT(stmt) \
if (static_cast<bool>(stmt) == false) { \
rosa::dbgs() << __FILENAME__ << ":" << __LINE__ \
<< ": requirement failed: '" << #stmt << "'" << std::endl; \
::abort(); \
} \
ROSA_VOID_STMT
#else
// defined(ROSA_LINUX)
#include
<execinfo.h>
#define ASSERT(stmt) \
if (static_cast<bool>(stmt) == false) { \
rosa::dbgs() << __FILENAME__ << ":" << __LINE__ \
<< ": requirement failed: '" << #stmt << "'" << std::endl; \
void *array[20]; \
auto bt_size = ::backtrace(array, 20); \
::backtrace_symbols_fd(array, bt_size, 2); \
::abort(); \
} \
ROSA_VOID_STMT
#endif
// defined(ROSA_ENABLE_ASSERTIONS)
#ifndef NDEBUG
#define DEBUG(X) \
do { \
X; \
} while (false)
#define DEBUGVAR(V) \
do { \
rosa::dbgs() << #V << " (" << __FILENAME__ << ":" << __LINE__ \
<< "): " << (V) << std::endl; \
} while (false)
#else
// defined(NDEBUG)
#define DEBUG(X) ROSA_IGNORE_UNUSED(X)
#define DEBUGVAR(X) ROSA_IGNORE_UNUSED(X)
#endif
// defined(NDEBUG)
#endif
// ROSA_SUPPORT_DEBUG_HPP
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Tue, Oct 27, 7:34 PM (1 d, 6 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
411411
Default Alt Text
debug.hpp (3 KB)
Attached To
Mode
R20 SoC_Rosa_repo
Attached
Detach File
Event Timeline