Teuchos - Trilinos Tools Package
Version of the Day
|
Debug-mode RCPNode tracing class. More...
#include <Teuchos_RCPNode.hpp>
Classes | |
struct | RCPNodeStatistics |
RCP statistics struct. More... | |
Static Public Member Functions | |
General user functions (can be called by any client) | |
static bool | isTracingActiveRCPNodes () |
Return if we are tracing active nodes or not. More... | |
static int | numActiveRCPNodes () |
Print the number of active RCPNode objects currently being tracked. More... | |
static RCPNodeStatistics | getRCPNodeStatistics () |
Return the statistics on RCPNode allocations. More... | |
static void | printRCPNodeStatistics (const RCPNodeStatistics &rcpNodeStatistics, std::ostream &out) |
Print the RCPNode allocation statistics. More... | |
static void | setPrintRCPNodeStatisticsOnExit (bool printRCPNodeStatisticsOnExit) |
Set if RCPNode usage statistics will be printed when the program ends or not. More... | |
static bool | getPrintRCPNodeStatisticsOnExit () |
Return if RCPNode usage statistics will be printed when the program ends or not. More... | |
static void | setPrintActiveRcpNodesOnExit (bool printActiveRcpNodesOnExit) |
Set if printActiveRCPNodes() is called on exit from the program. More... | |
static bool | getPrintActiveRcpNodesOnExit () |
Return if printActiveRCPNodes() is called on exit from the program. More... | |
static void | printActiveRCPNodes (std::ostream &out) |
Print the list of currently active RCP nodes. More... | |
Internal implementation functions (not to be called by general | |
clients). | |
static void | addNewRCPNode (RCPNode *rcp_node, const std::string &info) |
Add new RCPNode to the global list. More... | |
static void | removeRCPNode (RCPNode *rcp_node) |
Remove an RCPNode from global list. More... | |
template<class T > | |
static const void * | getRCPNodeBaseObjMapKeyVoidPtr (T *p) |
Get a const void* address to be used as the lookup key for an RCPNode given its embedded object's typed pointer. More... | |
static RCPNode * | getExistingRCPNodeGivenLookupKey (const void *lookupKey) |
Return a raw pointer to an existing owning RCPNode given its lookup key. More... | |
template<class T > | |
static RCPNode * | getExistingRCPNode (T *p) |
Return a raw pointer to an existing owning RCPNode given the address to the underlying object if it exits. More... | |
static std::string | getActiveRCPNodeHeaderString () |
Header string used in printActiveRCPNodes(). More... | |
static std::string | getCommonDebugNotesString () |
Common error message string on how to debug RCPNode problems. More... | |
Debug-mode RCPNode tracing class.
This is a static class that is used to trace all RCP nodes that are created and destroyed and to look-up RCPNodes given an an object's address. This database is used for several different types of debug-mode runtime checking including a) the detection of cicular references, b) detecting the creation of duplicate owning RCPNode objects for the same reference-counted object, and c) to create weak RCP objects for existing RCPNode objects.
This is primarily an internal implementation class but there are a few functions (maked as such below) that can be called by general users to turn on and off node tracing and to print the active RCPNode objects at any time.
Definition at line 302 of file Teuchos_RCPNode.hpp.
|
static |
Return if we are tracing active nodes or not.
NOTE: This will always return false
when TEUCHOS_DEBUG
is not defined.
Definition at line 298 of file Teuchos_RCPNode.cpp.
|
static |
Print the number of active RCPNode objects currently being tracked.
Definition at line 312 of file Teuchos_RCPNode.cpp.
|
static |
Return the statistics on RCPNode allocations.
Definition at line 322 of file Teuchos_RCPNode.cpp.
|
static |
Print the RCPNode allocation statistics.
Definition at line 327 of file Teuchos_RCPNode.cpp.
|
static |
Set if RCPNode usage statistics will be printed when the program ends or not.
Definition at line 341 of file Teuchos_RCPNode.cpp.
|
static |
Return if RCPNode usage statistics will be printed when the program ends or not.
Definition at line 348 of file Teuchos_RCPNode.cpp.
|
static |
Set if printActiveRCPNodes() is called on exit from the program.
Definition at line 354 of file Teuchos_RCPNode.cpp.
|
static |
Return if printActiveRCPNodes() is called on exit from the program.
Definition at line 360 of file Teuchos_RCPNode.cpp.
|
static |
Print the list of currently active RCP nodes.
When the macro TEUCHOS_SHOW_ACTIVE_REFCOUNTPTR_NODE_TRACE
is defined, this function will print out all of the RCP nodes that are currently active. This function can be called at any time during a program.
When the macro TEUCHOS_SHOW_ACTIVE_REFCOUNTPTR_NODE_TRACE
is defined this function will get called automatically after the program ends by default and all of the local and global RCP objects have been destroyed. If any RCP nodes are printed at that time, then this is an indication that there may be some circular references that will caused memory leaks. You memory checking tool such as valgrind or purify should complain about this!
Definition at line 366 of file Teuchos_RCPNode.cpp.
|
static |
Add new RCPNode to the global list.
Only gets called when RCPNode tracing has been activated.
Definition at line 412 of file Teuchos_RCPNode.cpp.
|
static |
Remove an RCPNode from global list.
Always gets called in a debug build (TEUCHOS_DEBUG
defined) when node tracing is enabled.
Definition at line 504 of file Teuchos_RCPNode.cpp.
|
inlinestatic |
Get a const void*
address to be used as the lookup key for an RCPNode given its embedded object's typed pointer.
This only returns the base address reliabily for all types if HAS_TEUCHOS_GET_BASE_OBJ_VOID_PTR
is defined.
0
if p == 0
. Definition at line 432 of file Teuchos_RCPNode.hpp.
|
static |
Return a raw pointer to an existing owning RCPNode given its lookup key.
returnVal != 0
if an owning RCPNode exists, 0
otherwsise. Definition at line 559 of file Teuchos_RCPNode.cpp.
|
inlinestatic |
Return a raw pointer to an existing owning RCPNode given the address to the underlying object if it exits.
returnVal != 0
if an owning RCPNode exists, 0
otherwsise. Definition at line 462 of file Teuchos_RCPNode.hpp.
|
static |
Header string used in printActiveRCPNodes().
Definition at line 578 of file Teuchos_RCPNode.cpp.
|
static |
Common error message string on how to debug RCPNode problems.
Definition at line 605 of file Teuchos_RCPNode.cpp.