Wire Sysio
Wire Sysion 1.0.0
Loading...
Searching...
No Matches
catch_debugger.h
Go to the documentation of this file.
1
/*
2
* Created by Phil on 3/12/2013.
3
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
4
*
5
* Distributed under the Boost Software License, Version 1.0. (See accompanying
6
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7
*
8
*/
9
#ifndef TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED
10
#define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED
11
12
#include "
catch_platform.h
"
13
14
namespace
Catch
{
15
bool
isDebuggerActive
();
16
}
17
18
#ifdef CATCH_PLATFORM_MAC
19
20
#define CATCH_TRAP() __asm__("int $3\n" : : )
/* NOLINT */
21
22
#elif defined(CATCH_PLATFORM_LINUX)
23
// If we can use inline assembler, do it because this allows us to break
24
// directly at the location of the failing check instead of breaking inside
25
// raise() called from it, i.e. one stack frame below.
26
#if defined(__GNUC__) && (defined(__i386) || defined(__x86_64))
27
#define CATCH_TRAP() asm volatile ("int $3")
/* NOLINT */
28
#else
// Fall back to the generic way.
29
#include <signal.h>
30
31
#define CATCH_TRAP() raise(SIGTRAP)
32
#endif
33
#elif defined(_MSC_VER)
34
#define CATCH_TRAP() __debugbreak()
35
#elif defined(__MINGW32__)
36
extern
"C"
__declspec(dllimport)
void
__stdcall DebugBreak();
37
#define CATCH_TRAP() DebugBreak()
38
#endif
39
40
#ifdef CATCH_TRAP
41
#define CATCH_BREAK_INTO_DEBUGGER() []{ if( Catch::isDebuggerActive() ) { CATCH_TRAP(); } }()
42
#else
43
#define CATCH_BREAK_INTO_DEBUGGER() []{}()
44
#endif
45
46
#endif
// TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED
catch_platform.h
Catch
Definition
231-Cfg-OutputStreams.cpp:32
Catch::isDebuggerActive
bool isDebuggerActive()
Definition
catch_debugger.cpp:121
libraries
sys-vm
external
Catch2
include
internal
catch_debugger.h
Generated by
1.12.0