Optional Two-phase heap tracing
[hiphop-php.git] / hphp / util / debug.h
blob105b27e9ffcce20ba9c51fd6a07cecbc85e6c63c
1 /*
2 +----------------------------------------------------------------------+
3 | HipHop for PHP |
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
17 #ifndef incl_HPHP_DEBUG_H_
18 #define incl_HPHP_DEBUG_H_
20 #include <signal.h>
22 #ifdef DEBUG
25 * Conditionally drop into the debugger
27 #ifdef _MSC_VER
28 #include <intrin.h>
29 #define DEBUGGER() __debugbreak()
30 #else
31 #define DEBUGGER() kill(getpid(), SIGTRAP)
32 #endif
35 * DEBUGGER_IF: use like always_assert(), i.e., do not rely on side effects
36 * of pred, as it will be compiled out of debug builds.
38 #define DEBUGGER_IF(pred) do { \
39 if ((pred)) { \
40 DEBUGGER(); \
41 } \
42 } while(0)
44 #else
45 #define DEBUGGER() do { } while(0)
46 #define DEBUGGER_IF(...) do { } while(0)
47 #endif /* DEBUG */
49 #endif /* incl_HPHP_DEBUG_H_ */