From e6af39ec59d863080c8aa1cebd70d0a0d4fab322 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" Date: Thu, 14 Apr 2011 15:09:17 +0000 Subject: [PATCH] [pykd] fixed : hotfix git-svn-id: https://pykd.svn.codeplex.com/svn@63977 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dbgclient.h | 2 ++ pykd/dbgeventcb.cpp | 3 +++ pykd/dbgext.cpp | 22 ++++++++++++++++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pykd/dbgclient.h b/pykd/dbgclient.h index 0963236..f7f3f1c 100644 --- a/pykd/dbgclient.h +++ b/pykd/dbgclient.h @@ -11,6 +11,8 @@ public: dbgClient() { + m_callbacks = NULL; + IDebugClient4 *client = NULL; DebugCreate( __uuidof(IDebugClient4), (void **)&client ); diff --git a/pykd/dbgeventcb.cpp b/pykd/dbgeventcb.cpp index de9d781..0e9a8b7 100644 --- a/pykd/dbgeventcb.cpp +++ b/pykd/dbgeventcb.cpp @@ -39,7 +39,10 @@ DbgEventCallbacksManager::DbgEventCallbacksManager( IDebugClient *client ) DbgEventCallbacksManager::~DbgEventCallbacksManager() { if ( m_debugClient ) + { + m_debugClient->SetEventCallbacks( NULL ); m_debugClient->Release(); + } } /////////////////////////////////////////////////////////////////////////////////// diff --git a/pykd/dbgext.cpp b/pykd/dbgext.cpp index b2563df..548d44a 100644 --- a/pykd/dbgext.cpp +++ b/pykd/dbgext.cpp @@ -473,25 +473,43 @@ DebugExtensionUninitialize() DbgExt::DbgExt( IDebugClient4 *masterClient ) { + client = NULL; masterClient->QueryInterface( __uuidof(IDebugClient), (void **)&client ); + + client4 = NULL; masterClient->QueryInterface( __uuidof(IDebugClient4), (void **)&client4 ); - - + + control = NULL; masterClient->QueryInterface( __uuidof(IDebugControl), (void **)&control ); + + control4 = NULL; masterClient->QueryInterface( __uuidof(IDebugControl4), (void **)&control4 ); + registers = NULL; masterClient->QueryInterface( __uuidof(IDebugRegisters), (void **)®isters ); + symbols = NULL; masterClient->QueryInterface( __uuidof(IDebugSymbols), (void ** )&symbols ); + + symbols2 = NULL; masterClient->QueryInterface( __uuidof(IDebugSymbols2), (void ** )&symbols2 ); + + symbols3 = NULL; masterClient->QueryInterface( __uuidof(IDebugSymbols3), (void ** )&symbols3 ); + dataSpaces = NULL; masterClient->QueryInterface( __uuidof(IDebugDataSpaces), (void **)&dataSpaces ); + + dataSpaces4 = NULL; masterClient->QueryInterface( __uuidof(IDebugDataSpaces4), (void **)&dataSpaces4 ); + advanced2 = NULL; masterClient->QueryInterface( __uuidof(IDebugAdvanced2), (void **)&advanced2 ); + system = NULL; masterClient->QueryInterface( __uuidof(IDebugSystemObjects), (void**)&system ); + + system2 = NULL; masterClient->QueryInterface( __uuidof(IDebugSystemObjects2), (void**)&system2 ); m_previosExt = dbgExt;