diff --git a/pykd_ext/version.h b/pykd_ext/version.h index 18bf1c9..a1805fa 100644 --- a/pykd_ext/version.h +++ b/pykd_ext/version.h @@ -3,7 +3,7 @@ #define PYKDEXT_VERSION_MAJOR 2 #define PYKDEXT_VERSION_MINOR 0 #define PYKDEXT_VERSION_SUBVERSION 0 -#define PYKDEXT_VERSION_BUILDNO 4 +#define PYKDEXT_VERSION_BUILDNO 5 #define __VER_STR2__(x) #x #define __VER_STR1__(x) __VER_STR2__(x) diff --git a/pykd_ext/windbgext.cpp b/pykd_ext/windbgext.cpp index 31dcba7..d404778 100644 --- a/pykd_ext/windbgext.cpp +++ b/pykd_ext/windbgext.cpp @@ -133,52 +133,65 @@ info( PCSTR args ) { - std::stringstream sstr; - - sstr < interpreterList = getInstalledInterpreter(); - - int defaultMajor; - int defaultMinor; - - getDefaultPythonVersion(defaultMajor, defaultMinor); - - sstr << std::endl << "Installed python:" << std::endl << std::endl; - sstr << std::setw(16) << std::left << "Version:" << std::setw(12) << std::left << "Status: " << std::left << "Image:" << std::endl; - sstr << "------------------------------------------------------------------------------" << std::endl; - if (interpreterList.size() > 0) + try { - for (const InterpreterDesc& desc : interpreterList) + std::stringstream sstr; + + sstr < interpreterList = getInstalledInterpreter(); + + int defaultMajor; + int defaultMinor; + + getDefaultPythonVersion(defaultMajor, defaultMinor); + + sstr << std::endl << "Installed python:" << std::endl << std::endl; + sstr << std::setw(16) << std::left << "Version:" << std::setw(12) << std::left << "Status: " << std::left << "Image:" << std::endl; + sstr << "------------------------------------------------------------------------------" << std::endl; + if (interpreterList.size() > 0) { - if ( defaultMajor == desc.majorVersion && defaultMinor == desc.minorVersion) - sstr << "* "; - else - sstr << " "; + for (const InterpreterDesc& desc : interpreterList) + { + if ( defaultMajor == desc.majorVersion && defaultMinor == desc.minorVersion) + sstr << "* "; + else + sstr << " "; - sstr << std::setw(14) << std::left << make_version(desc.majorVersion, desc.minorVersion); + sstr << std::setw(14) << std::left << make_version(desc.majorVersion, desc.minorVersion); - sstr << std::setw(12) << std::left << (isInterpreterLoaded(desc.majorVersion, desc.minorVersion) ? "Loaded" : "Unloaded"); + sstr << std::setw(12) << std::left << (isInterpreterLoaded(desc.majorVersion, desc.minorVersion) ? "Loaded" : "Unloaded"); - sstr << desc.imagePath << std::endl; + sstr << desc.imagePath << std::endl; + } } - } - else + else + { + sstr << "No python interpreter found" << std::endl; + } + + sstr << std::endl; + + CComQIPtr control = client; + + control->ControlledOutput( + DEBUG_OUTCTL_THIS_CLIENT, + DEBUG_OUTPUT_NORMAL, + sstr.str().c_str() + ); + } + catch(std::exception &e) { - sstr << "No python interpreter found" << std::endl; + CComQIPtr control = client; + + control->ControlledOutput( + DEBUG_OUTCTL_THIS_CLIENT, + DEBUG_OUTPUT_ERROR, + e.what() + ); } - sstr << std::endl; - - CComQIPtr control = client; - - control->ControlledOutput( - DEBUG_OUTCTL_THIS_CLIENT, - DEBUG_OUTPUT_NORMAL, - sstr.str().c_str() - ); - return S_OK; }