1 //  (C) Copyright Gennadiy Rozental 2006-2008.
2 //  Distributed under the Boost Software License, Version 1.0.
3 //  (See accompanying file LICENSE_1_0.txt or copy at
4 //  http://www.boost.org/LICENSE_1_0.txt)
5 
6 //  See http://www.boost.org/libs/test for the library home page.
7 //
8 //  File        : $RCSfile$
9 //
10 //  Version     : $Revision: 49312 $
11 //
12 //  Description : defines portable debug interfaces
13 // ***************************************************************************
14 
15 #ifndef BOOST_TEST_DEBUG_API_HPP_112006GER
16 #define BOOST_TEST_DEBUG_API_HPP_112006GER
17 
18 // Boost.Test
19 #include <boost/test/detail/config.hpp>
20 #include <boost/test/utils/callback.hpp>
21 #include <boost/test/utils/basic_cstring/basic_cstring.hpp>
22 
23 // STL
24 #include <string>
25 
26 #include <boost/test/detail/suppress_warnings.hpp>
27 
28 //____________________________________________________________________________//
29 
30 namespace boost {
31 
32 namespace debug {
33 
34 // ************************************************************************** //
35 // **************  check if program is running under debugger  ************** //
36 // ************************************************************************** //
37 
38 bool BOOST_TEST_DECL under_debugger();
39 
40 // ************************************************************************** //
41 // **************       cause program to break execution       ************** //
42 // **************           in debugger at call point          ************** //
43 // ************************************************************************** //
44 
45 void BOOST_TEST_DECL debugger_break();
46 
47 // ************************************************************************** //
48 // **************              gui debugger setup              ************** //
49 // ************************************************************************** //
50 
51 struct dbg_startup_info {
52     long                    pid;
53     bool                    break_or_continue;
54     unit_test::const_string binary_path;
55     unit_test::const_string display;
56     unit_test::const_string init_done_lock;
57 };
58 
59 typedef unit_test::callback1<dbg_startup_info const&> dbg_starter;
60 
61 // ************************************************************************** //
62 // **************                debugger setup                ************** //
63 // ************************************************************************** //
64 
65 #if BOOST_WORKAROUND( BOOST_MSVC, <1300)
66 
67 std::string BOOST_TEST_DECL set_debugger( unit_test::const_string dbg_id );
68 
69 #else
70 
71 std::string BOOST_TEST_DECL set_debugger( unit_test::const_string dbg_id, dbg_starter s = dbg_starter() );
72 
73 #endif
74 
75 
76 // ************************************************************************** //
77 // **************    attach debugger to the current process    ************** //
78 // ************************************************************************** //
79 
80 bool BOOST_TEST_DECL attach_debugger( bool break_or_continue = true );
81 
82 // ************************************************************************** //
83 // **************   switch on/off detect memory leaks feature  ************** //
84 // ************************************************************************** //
85 
86 void BOOST_TEST_DECL detect_memory_leaks( bool on_off );
87 
88 // ************************************************************************** //
89 // **************      cause program to break execution in     ************** //
90 // **************     debugger at specific allocation point    ************** //
91 // ************************************************************************** //
92 
93 void BOOST_TEST_DECL break_memory_alloc( long mem_alloc_order_num );
94 
95 } // namespace debug
96 
97 } // namespace boost
98 
99 #include <boost/test/detail/enable_warnings.hpp>
100 
101 #endif
102