From eece068ff321a068003682f4975746afb3408987 Mon Sep 17 00:00:00 2001 From: "SND\\EreTIk_cp" Date: Thu, 26 Jan 2012 20:33:52 +0000 Subject: [PATCH] [0.1.x] ~fix: infinite recursion (reload symbols->get pdb->reload symbols...) git-svn-id: https://pykd.svn.codeplex.com/svn@73653 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/module.cpp | 14 ++++++++++++-- pykd/module.h | 6 +++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pykd/module.cpp b/pykd/module.cpp index 6feb299..af1f331 100644 --- a/pykd/module.cpp +++ b/pykd/module.cpp @@ -137,7 +137,8 @@ Module::getPdbName() if (!*moduleInfo.LoadedPdbName) { - reloadSymbols(); + reloadSymbolsImpl(); + hres = m_advanced->GetSymbolInformation( DEBUG_SYMINFO_IMAGEHLP_MODULEW64, m_base, @@ -162,7 +163,7 @@ Module::getPdbName() /////////////////////////////////////////////////////////////////////////////////// void -Module::reloadSymbols() +Module::reloadSymbolsImpl() { HRESULT hres; @@ -172,6 +173,15 @@ Module::reloadSymbols() hres = m_symbols->Reload( param.c_str() ); if ( FAILED( hres ) ) throw DbgException("IDebugSymbols::Reload failed" ); +} + + +/////////////////////////////////////////////////////////////////////////////////// + +void +Module::reloadSymbols() +{ + reloadSymbolsImpl(); m_dia.reset(); m_dia = pyDia::GlobalScope::loadPdb( getPdbName() ); diff --git a/pykd/module.h b/pykd/module.h index ac77774..1449cf0 100644 --- a/pykd/module.h +++ b/pykd/module.h @@ -45,7 +45,7 @@ public: void reloadSymbols(); - + ULONG64 getSymbol( const std::string &symbolname ) { return m_base + getRvaByName(symbolname); @@ -96,6 +96,10 @@ public: private: + void + reloadSymbolsImpl(); + + ULONG getRvaByName(const std::string &symName); BaseTypeVariant getValue() {