diff --git a/pykd/pykdver.h b/pykd/pykdver.h index 064c343..0963004 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 1 +#define PYKD_VERSION_BUILDNO 2 #define __VER_STR2__(x) #x diff --git a/pykd/typeinfo.cpp b/pykd/typeinfo.cpp index 73bb42a..19dd6b5 100644 --- a/pykd/typeinfo.cpp +++ b/pykd/typeinfo.cpp @@ -76,9 +76,19 @@ ULONG64 TypeInfo::getSymbolSize( const std::string &fullName ) std::string TypeInfo::findSymbol( ULONG64 offset ) { - ModulePtr module = Module::loadModuleByOffset( offset ); + try { - return module->getName() + '!' + module->getSymbolNameByVa( offset ); + ModulePtr module = Module::loadModuleByOffset( offset ); + + return module->getName() + '!' + module->getSymbolNameByVa( offset ); + + } + catch( DbgException& ) + { + std::stringstream sstr; + sstr << std::hex << offset; + return sstr.str(); + } } ///////////////////////////////////////////////////////////////////////////////////// diff --git a/samples/km/ssdt.py b/samples/km/ssdt.py index 7ac0b40..32edd97 100644 --- a/samples/km/ssdt.py +++ b/samples/km/ssdt.py @@ -44,10 +44,6 @@ def checkSSDT(): dprintln( "[%u] " % i + findSymbol( serviceTable[i] ) ) def run(): - checkSSDT() - - -if __name__ == "__main__": while True: @@ -60,6 +56,12 @@ if __name__ == "__main__": dprintln( "not a kernel debugging" ) break - run() + checkSSDT() break + + + +if __name__ == "__main__": + + run() diff --git a/samples/samples.py b/samples/samples.py index 9a87d6c..59a9d08 100644 --- a/samples/samples.py +++ b/samples/samples.py @@ -6,6 +6,8 @@ from pykd import dprintln from pykd import dprint def printAllSamples(): + dprintln( "User mode", True) + dprintln( "Get critical sections list Run Source", True) dprintln( "Kernel mode", True ) dprintln( "Get process list Run Source", True) dprintln( "Get kernel service list Run Source", True) diff --git a/test/scripts/moduletest.py b/test/scripts/moduletest.py index 701d578..cd65e71 100644 --- a/test/scripts/moduletest.py +++ b/test/scripts/moduletest.py @@ -66,6 +66,6 @@ class ModuleTest( unittest.TestCase ): self.assertTrue( re.search('targetapp\\.cpp', fileName ) ) self.assertEqual( 2, displacement ) fileName, lineNo, displacement = pykd.getSourceLine() - self.assertEqual( 622, lineNo ) + self.assertEqual( 624, lineNo ) diff --git a/test/targetapp/targetapp.cpp b/test/targetapp/targetapp.cpp index 7c38a9c..00b0f0d 100644 --- a/test/targetapp/targetapp.cpp +++ b/test/targetapp/targetapp.cpp @@ -459,6 +459,8 @@ void FuncWithName1(int a) std::cout << g_arrOfPtrToFunc[1]; } +#pragma optimize("g", off) + static void _FuncWithName2(int a) { @@ -466,7 +468,7 @@ void _FuncWithName2(int a) } //////////////////////////////////////////////////////////////////////////////// -#pragma optimize("g", off) + VOID functionCalledFromEnumWindowsProc1(DWORD dwProcessId) { DWORD dwCurrentProcessId = GetCurrentProcessId();