From a2ea430be4c23fa82451590a709201137f1fec89 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Wed, 31 Oct 2012 12:19:56 +0000 Subject: [PATCH] [0.2.x] fixed : IDebugEventCallback::LoadModule exception on kernel debugging git-svn-id: https://pykd.svn.codeplex.com/svn@80733 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/pykdver.h | 2 +- pykd/win/dbgeng.cpp | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/pykd/pykdver.h b/pykd/pykdver.h index 3c7301e..123c98e 100644 --- a/pykd/pykdver.h +++ b/pykd/pykdver.h @@ -2,7 +2,7 @@ #define PYKD_VERSION_MAJOR 0 #define PYKD_VERSION_MINOR 2 #define PYKD_VERSION_SUBVERSION 0 -#define PYKD_VERSION_BUILDNO 3 +#define PYKD_VERSION_BUILDNO 4 #define __VER_STR2__(x) #x diff --git a/pykd/win/dbgeng.cpp b/pykd/win/dbgeng.cpp index d4b37d7..a18df6f 100644 --- a/pykd/win/dbgeng.cpp +++ b/pykd/win/dbgeng.cpp @@ -1015,7 +1015,22 @@ HRESULT STDMETHODCALLTYPE DebugEngine::LoadModule( { PyThread_StateSave pyThreadSave( it->pystate ); - DEBUG_CALLBACK_RESULT ret = it->callback->OnModuleLoad( BaseOffset, std::string(ModuleName) ); + std::string modName; + + if ( ModuleName ) + { + modName = ModuleName; + } + else if ( ImageName ) + { + // при работоте kernel отладчика ModuleName может быть равен NULL; + modName = ImageName; + modName.erase( modName.rfind('.') ); + } + else + modName = ""; + + DEBUG_CALLBACK_RESULT ret = it->callback->OnModuleLoad( BaseOffset, modName ); result = ret != DebugCallbackNoChange ? ret : result; }