123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- ////////////////////////////////////////////////////////////////////////////////
- // $Id: vld.h,v 1.15.2.1 2005/08/03 23:13:47 dmouldin Exp $
- //
- // Visual Leak Detector (Version 1.0)
- // Copyright (c) 2005 Dan Moulding
- //
- // This program is free software; you can redistribute it and/or modify
- // it under the terms of the GNU Lesser General Public License as published by
- // the Free Software Foundation; either version 2.1 of the License, or
- // (at your option) any later version.
- //
- // This program is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // GNU Lesser General Public License for more details.
- //
- // You should have received a copy of the GNU Lesser General Public License
- // along with this program; if not, write to the Free Software
- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- //
- // See COPYING.txt for the full terms of the GNU Lesser General Public License.
- //
- ////////////////////////////////////////////////////////////////////////////////
- #pragma once
- #ifdef _DEBUG
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Configuration Options
- //
- // Configuration flags
- #define VLD_CONFIG_AGGREGATE_DUPLICATES 0x1
- #define VLD_CONFIG_SELF_TEST 0x2
- #define VLD_CONFIG_SHOW_USELESS_FRAMES 0x4
- #define VLD_CONFIG_START_DISABLED 0x8
- #ifndef VLDBUILD
- #ifdef __cplusplus
- extern "C" {
- #endif // __cplusplus
- // If VLD_AGGREGATE_DUPLICATES is defined, then duplicated leaks (those that
- // have the same size and call stack as a previously identified leak) are not
- // shown in detail in the memory leak report. Instead, only a count of the
- // number of matching duplicate leaks is shown along with the detailed
- // information from the first such leak encountered.
- #ifdef VLD_AGGREGATE_DUPLICATES
- #define VLD_FLAG_AGGREGATE_DUPLICATES VLD_CONFIG_AGGREGATE_DUPLICATES
- #else
- #define VLD_FLAG_AGGREGATE_DUPLICATES 0x0
- #endif // VLD_AGGREGATE_DUPLICATES
- // If VLD_MAX_DATA_DUMP is defined, then the amount of data shown in user-data
- // memory dumps will be limited to the specified number of bytes.
- #ifdef VLD_MAX_DATA_DUMP
- unsigned long _VLD_maxdatadump = VLD_MAX_DATA_DUMP;
- #else
- unsigned long _VLD_maxdatadump = 0xffffffff;
- #endif // VLD_MAX_DATA_DUMP
- // If VLD_MAX_TRACE_FRAMES is defined, then the number of frames traced for each
- // allocated memory block when walking the stack will be limited to the
- // specified number of frames.
- #ifdef VLD_MAX_TRACE_FRAMES
- unsigned long _VLD_maxtraceframes = VLD_MAX_TRACE_FRAMES;
- #else
- unsigned long _VLD_maxtraceframes = 0xffffffff;
- #endif // VLD_MAX_TRACE_FRAMES
- // If VLD_SELF_TEST is defined, then Visual Leak Detector will perform a memory
- // leak self-test, by intentionally leaking memory, to ensure that it is able to
- // correctly detect memory leaks internal to Visual Leak Detector.
- #ifdef VLD_SELF_TEST
- #define VLD_FLAG_SELF_TEST VLD_CONFIG_SELF_TEST
- #else
- #define VLD_FLAG_SELF_TEST 0x0
- #endif // VLD_SELF_TEST
- // If VLD_SHOW_USELESS_FRAMES is defined, then all frames traced will be
- // displayed, even frames internal to the heap and Visual Leak Detector.
- #ifdef VLD_SHOW_USELESS_FRAMES
- #define VLD_FLAG_SHOW_USELESS_FRAMES VLD_CONFIG_SHOW_USELESS_FRAMES
- #else
- #define VLD_FLAG_SHOW_USELESS_FRAMES 0x0
- #endif // VLD_SHOW_USELESS_FRAMES
- // If VLD_START_DISABLED is defined, then Visual Leak Detector will initially
- // be disabled for all threads.
- #ifdef VLD_START_DISABLED
- #define VLD_FLAG_START_DISABLED VLD_CONFIG_START_DISABLED
- #else
- #define VLD_FLAG_START_DISABLED 0x0
- #endif // VLD_START_DISABLED
- // Initialize the configuration flags based on defined preprocessor macros.
- unsigned _VLD_configflags = VLD_FLAG_AGGREGATE_DUPLICATES | VLD_FLAG_SELF_TEST |
- VLD_FLAG_SHOW_USELESS_FRAMES | VLD_FLAG_START_DISABLED;
- #ifdef __cplusplus
- }
- #endif // __cplusplus
- ////////////////////////////////////////////////////////////////////////////////
- //
- // Linker Directives
- //
- // Link with the appropriate Visual Leak Detector library. One of: multithreaded
- // DLL, multithreaded static, or single threaded. All three link with debug
- // versions of the CRT.
- #ifdef _DLL
- #pragma comment (lib, "vldmtdll.lib")
- #else
- #ifdef _MT
- #pragma comment (lib, "vldmt.lib")
- #else
- #pragma comment (lib, "vld.lib")
- #endif // _MT
- #endif // _DLL
- // Force a symbolic reference to the global VisualLeakDetector class object from
- // the library. This enusres that the object is linked with the program, even
- // though nobody directly references it outside of the library.
- #pragma comment(linker, "/include:?visualleakdetector@@3VVisualLeakDetector@@A")
- #endif // VLDBUILD
- #endif // _DEBUG
|