VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxBFE/Logging.h@ 2397

Last change on this file since 2397 was 676, checked in by vboxsync, 18 years ago

WIN32 -> WIN

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1/** @file
2 *
3 * VBox frontends: Basic Frontend (BFE):
4 * Logging macros and function definitions
5 */
6
7/*
8 * Copyright (C) 2006 InnoTek Systemberatung GmbH
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License as published by the Free Software Foundation,
14 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
15 * distribution. VirtualBox OSE is distributed in the hope that it will
16 * be useful, but WITHOUT ANY WARRANTY of any kind.
17 *
18 * If you received this file as part of a commercial VirtualBox
19 * distribution, then only the terms of your commercial VirtualBox
20 * license agreement apply instead of the previous paragraph.
21 */
22
23#ifndef ____H_LOGGING
24#define ____H_LOGGING
25
26/*
27 * We might be including the VBox logging subsystem before
28 * including this header file, so reset the logging group.
29 */
30#ifdef LOG_GROUP
31#undef LOG_GROUP
32#endif
33#define LOG_GROUP LOG_GROUP_MAIN
34#include <VBox/log.h>
35#include <iprt/assert.h>
36#include <iprt/thread.h>
37
38/**
39 * Helpful macro to trace execution.
40 */
41#define LogTrace() \
42 LogFlow((">>>>> %s (%d): %s\n", __FILE__, __LINE__, __PRETTY_FUNCTION__))
43
44/**
45 * Helper macro to print the current reference count of the given COM object
46 * to the log file.
47 * @param obj object in question (must be a pointer to an IUnknown subclass)
48 */
49#define LogComRefCnt(obj) \
50 do { \
51 int refc = (obj)->AddRef(); refc --; \
52 LogFlow (("{%p} " #obj ".refcount=%d\n", (obj), refc)); \
53 (obj)->Release(); \
54 } while (0)
55
56#if defined(DEBUG) || defined(LOG_ENABLED)
57# define V_DEBUG(m) V_LOG(m)
58#if defined(__WIN__)
59# define V_LOG(m) \
60 do { Log (("[MAIN:%05u] ", GetCurrentThreadId())); Log (m); Log (("\n")); } while (0)
61# define V_LOG2(m) \
62 do { Log2 (("[MAIN:%05u] ", GetCurrentThreadId())); Log2 (m); Log2 (("\n")); } while (0)
63# define V_LOGFLOW(m) \
64 do { LogFlow (("[MAIN:%05u] ", GetCurrentThreadId())); LogFlow (m); LogFlow (("\n")); } while (0)
65# define V_LOGFLOWMEMBER(m) \
66 do { LogFlow (("[MAIN:%05u] {%p} ", GetCurrentThreadId(), this)); LogFlow (m); LogFlow (("\n")); } while (0)
67# define V_ASSERTMSG(m, e) \
68 AssertMsg(e, m)
69# define V_ASSERTFAILED(m) \
70 AssertMsgFailed(m)
71#else
72# define V_LOG(m) \
73 do { Log (("[MAIN:%RTnthrd] ", RTThreadNativeSelf())); Log (m); Log (("\n")); } while (0)
74# define V_LOG2(m) \
75 do { Log2 (("[MAIN:%RTnthrd] ", RTThreadNativeSelf())); Log2 (m); Log2 (("\n")); } while (0)
76# define V_LOGFLOW(m) \
77 do { LogFlow (("[MAIN:%RTnthrd] ", RTThreadNativeSelf())); LogFlow (m); LogFlow (("\n")); } while (0)
78# define V_LOGFLOWMEMBER(m) \
79 do { LogFlow (("[MAIN:%RTnthrd] {%p} ", RTThreadNativeSelf(), this)); LogFlow (m); LogFlow (("\n")); } while (0)
80# define V_ASSERTMSG(m, e) \
81 AssertMsg(e, m)
82# define V_ASSERTFAILED(m) \
83 AssertMsgFailed(m)
84#endif
85# define LogFlowMember(m) \
86 do { LogFlow (("{%p} ", this)); LogFlow (m); } while (0)
87#else // if !DEBUG
88# define V_DEBUG(m) do {} while (0)
89# define V_LOG(m) do {} while (0)
90# define V_LOG2(m) do {} while (0)
91# define V_LOGFLOW(m) do {} while (0)
92# define V_LOGFLOWMEMBER(m) do {} while (0)
93# define V_ASSERTMSG(m, e) do {} while (0)
94# define V_ASSERTFAILED(m) do {} while (0)
95# define LogFlowMember(m) do {} while (0)
96#endif // !DEBUG
97
98#endif // ____H_LOGGING
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette