From 6b3b2f5965e5dfb2000bb9c23f11a83e175741de Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sat, 7 Feb 2015 01:23:11 +0100 Subject: Added code for printing info about hidden Rooted elements --- src/core/managed/Manager.cpp | 25 +++++++++++++++++-------- src/core/managed/Manager.hpp | 3 ++- 2 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/core/managed/Manager.cpp b/src/core/managed/Manager.cpp index 4743471..2e0b882 100644 --- a/src/core/managed/Manager.cpp +++ b/src/core/managed/Manager.cpp @@ -21,9 +21,8 @@ #include "Managed.hpp" #include "Manager.hpp" -//#define MANAGER_DEBUG_PRINT - -#if defined(MANAGER_DEBUG_PRINT) || defined(MANAGER_GRAPHVIZ_EXPORT) +#if defined(MANAGER_DEBUG_PRINT) || defined(MANAGER_GRAPHVIZ_EXPORT) || \ + defined(MANAGER_DEBUG_HIDDEN_ROOTED) #include #include #include @@ -195,6 +194,15 @@ void Manager::deleteRef(Managed *tar, Managed *src, bool all) std::cout << "deleteRef " << tar << " <- " << src << std::endl; #endif +#ifdef MANAGER_DEBUG_HIDDEN_ROOTED + if (deletionRecursionDepth > 0 && src == 0) { + std::cerr << "\x1b[41;30mManager:\x1b[0m A managed object contains a rooted reference, " + "this may cause memory leaks!" << std::endl; + std::cerr << "\x1b[41;30mManager:\x1b[0m Referenced object is " << tar << " of type " + << tar->type().name << std::endl; + } +#endif + // Fetch the Managed descriptors for the two objects ObjectDescriptor *dTar = getDescriptor(tar); ObjectDescriptor *dSrc = getDescriptor(src); @@ -700,7 +708,8 @@ void Manager::exportGraphviz(const char *filename) break; } edgeCount -= c; - fs << "labeldistance=\"2\",headlabel=\"" << std::dec << c << "\"]" << std::endl; + fs << "labeldistance=\"2\",headlabel=\"" << std::dec << c + << "\"]" << std::endl; } } @@ -711,10 +720,10 @@ void Manager::exportGraphviz(const char *filename) continue; } uintptr_t pTar = reinterpret_cast(owner); - fs << "\tn" << std::hex << std::noshowbase << p << ":ev_" << d.getEventTypeName() << " -> n" - << std::hex << std::noshowbase << pTar - << " [weight=0,penwidth=0.5,color=darkolivegreen4,style=dashed,arrowhead=vee]" - << std::endl; + fs << "\tn" << std::hex << std::noshowbase << p << ":ev_" + << d.getEventTypeName() << " -> n" << std::hex << std::noshowbase + << pTar << " [weight=0,penwidth=0.5,color=darkolivegreen4,style=" + "dashed,arrowhead=vee]" << std::endl; } // Display root edges diff --git a/src/core/managed/Manager.hpp b/src/core/managed/Manager.hpp index 7a93736..6275df1 100644 --- a/src/core/managed/Manager.hpp +++ b/src/core/managed/Manager.hpp @@ -27,8 +27,9 @@ #ifndef _OUSIA_MANAGER_HPP_ #define _OUSIA_MANAGER_HPP_ -//#define MANAGER_DEBUG_PRINT #ifndef NDEBUG +//#define MANAGER_DEBUG_PRINT +#define MANAGER_DEBUG_HIDDEN_ROOTED #define MANAGER_GRAPHVIZ_EXPORT #endif -- cgit v1.2.3