|
#pragma once
#include "TypeTracker.h"
#include <set>
struct ObjectCreationSnapshot
{
ObjectID objectId;
ClassID classId;
CLRClass clrClass;
std::vector<std::wstring> stack;
};
class ObjectTracker
{
public:
ObjectTracker(TypeTracker &typeTracker) : m_TypeTracker(typeTracker){}
~ObjectTracker(void);
void SetTypeFilter(const std::vector<std::wstring> &typeFilters);
void Initialize(CComPtr<ICorProfilerInfo2> pCorProfilerInfo);
STDMETHODIMP ObjectAllocated(ObjectID objectId, ClassID classId);
STDMETHODIMP SurvivingReferences(ULONG cSurvivingObjectIDRanges,
ObjectID objectIDRangeStart[ ],
ULONG cObjectIDRangeLength[ ]);
STDMETHODIMP MovedReferences( ULONG cMovedObjectIDRanges,
ObjectID oldObjectIDRangeStart[ ],
ObjectID newObjectIDRangeStart[ ],
ULONG cObjectIDRangeLength[ ]);
HRESULT GetCreationSnapshot(ObjectID objectId, ObjectCreationSnapshot *creationSnapshot) const;
private:
static void HandleClassLoad(const CLRClass &classLoad, void *data);
bool PassesFilter(const std::wstring &typeName);
CComPtr<ICorProfilerInfo2> m_pCorProfilerInfo;
TypeTracker &m_TypeTracker;
typedef std::map<ObjectID, ObjectCreationSnapshot>::const_iterator OBJECT_CREATIONS_ITERATOR;
std::map<ObjectID, ObjectCreationSnapshot> m_resolvedObjectCreations;
typedef std::map<ClassID, ObjectCreationSnapshot>::const_iterator UNRESOLVED_OBJECT_CREATIONS_ITERATOR;
std::map<ClassID, ObjectCreationSnapshot> m_unResolvedObjectCreations;
std::vector<std::string>::const_iterator TYPE_FILTER_ITERATOR;
std::set<std::wstring> m_TypeFilters;
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I'm a 27 yrs old developer working with Atmel R&D India Pvt. Ltd., Chennai. I'm currently working in C# and C++, but I've done some Java programming as well. I was a Microsoft MVP in Visual C# from 2007 to 2009.
You can read
My Blog here. I've also done some open source software - please visit my
website to know more.