[0.2.x] ~small fixes for load symbols

git-svn-id: https://pykd.svn.codeplex.com/svn@80117 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\EreTIk_cp 2012-10-09 09:57:42 +00:00 committed by Mikhail I. Izmestev
parent 142dd21918
commit 4cb4014242
2 changed files with 30 additions and 7 deletions

View File

@ -259,7 +259,7 @@ public:
{ {
} }
HRESULT STDMETHODCALLTYPE load(__inout IDiaDataSource &dataSource) override virtual HRESULT load(__inout IDiaDataSource &dataSource) override
{ {
CComPtr< IUnknown > readExeAtRVACallback(new ReadExeAtRVACallback(m_loadBase, m_openedSymbolFile) ); CComPtr< IUnknown > readExeAtRVACallback(new ReadExeAtRVACallback(m_loadBase, m_openedSymbolFile) );
return return

View File

@ -44,17 +44,40 @@ Module::Module(ULONG64 offset )
SymbolSessionPtr& Module::getSymSession() SymbolSessionPtr& Module::getSymSession()
{ {
m_symSession = loadSymbolFile(m_base, m_imageName, m_symfile); if (m_symSession)
return m_symSession;
if ( !m_symSession ) try
{ {
m_symfile = getModuleSymbolFileName(m_base); m_symSession = loadSymbolFile(m_base, m_imageName, m_symfile);
m_symSession = loadSymbolFile(m_symfile, m_base); }
catch(const SymbolException &e)
{
DBG_UNREFERENCED_LOCAL_VARIABLE(e);
}
if (m_symSession)
return m_symSession;
// TODO: read image file path and load using IDiaReadExeAtOffsetCallback
m_symfile = getModuleSymbolFileName(m_base);
if (!m_symfile.empty())
{
try
{
m_symSession = loadSymbolFile(m_symfile, m_base);
}
catch(const SymbolException &e)
{
DBG_UNREFERENCED_LOCAL_VARIABLE(e);
}
if (m_symSession) if (m_symSession)
throw SymbolException( "failed to load symbol file" ); return m_symSession;
m_symfile.clear();
} }
return m_symSession; throw SymbolException( "failed to load symbol file" );
} }
///////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////