26#ifndef CASA_MEMORYTRACE_H
27#define CASA_MEMORYTRACE_H
29#include <casacore/casa/aips.h>
30#include <casacore/casa/OS/Timer.h>
95 static void writeBlock (
const char* msg,
const std::string& name);
96 static void writeBlock (
const char* msg,
const char* name);
99 static std::ofstream&
writeAlloc (
const void* ptr,
size_t);
115 static void* (*theirOldMallocHook)(size_t,
const void*);
149#define traceMemoryAlloc(ptr,size,msg) \
150 if (casacore::MemoryTrace::isOpen()) { \
151 casacore::MemoryTrace::writeAlloc (ptr, size) << msg << std::endl; \
153#define traceMemoryFree(ptr,msg) \
154 if (casacore::MemoryTrace::isOpen()) { \
155 casacore::MemoryTrace::writeFree (ptr) << msg << std::endl; \
158#define traceMemoryBlockBegin(name) \
159 if (casacore::MemoryTrace::isOpen()) { \
160 casacore::MemoryTrace::writeBlock(" begin ", name); \
162#define traceMemoryBlockEnd(name) \
163 if (casacore::MemoryTrace::isOpen()) { \
164 casacore::MemoryTrace::writeBlock(" end ", name); \
Class to write begin and end block message.
~MemoryTraceBlock()
The constructor writes a block end message.
MemoryTraceBlock(const char *name)
MemoryTraceBlock(const std::string &name)
The constructor writes a block begin message.
static void open()
Open the trace file if not open yet.
static Bool isOn()
Is tracing on?
static std::ofstream & writeFree(const void *ptr)
static std::string makeString(const char *)
Make a string from a char* without tracing a possible malloc in the string constructor.
static std::ofstream theirFile
static Bool isOpen()
Is the tracing file opened?
static void(* theirOldFreeHook)(void *, const void *)
static std::ofstream & writeAlloc(const void *ptr, size_t)
Write an alloc or free message.
static void writeBlock(const char *msg, const std::string &name)
Write a block line in the output file.
static void writeBlock(const char *msg, const char *name)
static void * mallocHook(size_t, const void *caller)
The hooks for malloc and free writing the trace messages.
static void close()
Close the tracing output file.
static void freeHook(void *, const void *caller)
static void start()
Start the tracing.
static void stop()
Stop the tracing.
this file contains all the compiler specific defines
bool Bool
Define the standard types used by Casacore.