summaryrefslogtreecommitdiff
path: root/src/core/managed
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-07 01:23:11 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-02-07 01:23:11 +0100
commit6b3b2f5965e5dfb2000bb9c23f11a83e175741de (patch)
treeed106bafd9a943473fe40ff45eb7f30a12a18c9e /src/core/managed
parentcae1060201f453d9d5e2941ed18699ab2a36990f (diff)
Added code for printing info about hidden Rooted elements
Diffstat (limited to 'src/core/managed')
-rw-r--r--src/core/managed/Manager.cpp25
-rw-r--r--src/core/managed/Manager.hpp3
2 files changed, 19 insertions, 9 deletions
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 <iostream>
#include <fstream>
#include <core/common/Rtti.hpp>
@@ -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<uintptr_t>(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