mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-19 19:13:22 +08:00
[pykd_ext_2.0] fixed : issue #13983 ( !pykd.info throws unhandled exception )
git-svn-id: https://pykd.svn.codeplex.com/svn@91044 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
c2a15c2769
commit
7b3710b487
@ -3,7 +3,7 @@
|
|||||||
#define PYKDEXT_VERSION_MAJOR 2
|
#define PYKDEXT_VERSION_MAJOR 2
|
||||||
#define PYKDEXT_VERSION_MINOR 0
|
#define PYKDEXT_VERSION_MINOR 0
|
||||||
#define PYKDEXT_VERSION_SUBVERSION 0
|
#define PYKDEXT_VERSION_SUBVERSION 0
|
||||||
#define PYKDEXT_VERSION_BUILDNO 4
|
#define PYKDEXT_VERSION_BUILDNO 5
|
||||||
|
|
||||||
#define __VER_STR2__(x) #x
|
#define __VER_STR2__(x) #x
|
||||||
#define __VER_STR1__(x) __VER_STR2__(x)
|
#define __VER_STR1__(x) __VER_STR2__(x)
|
||||||
|
@ -133,52 +133,65 @@ info(
|
|||||||
PCSTR args
|
PCSTR args
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::stringstream sstr;
|
try
|
||||||
|
|
||||||
sstr <<std::endl << "pykd bootstrapper version: " << PYKDEXT_VERSION_MAJOR << '.' << PYKDEXT_VERSION_MINOR << '.'
|
|
||||||
<< PYKDEXT_VERSION_SUBVERSION << '.' << PYKDEXT_VERSION_BUILDNO << std::endl;
|
|
||||||
|
|
||||||
std::list<InterpreterDesc> 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)
|
|
||||||
{
|
{
|
||||||
for (const InterpreterDesc& desc : interpreterList)
|
std::stringstream sstr;
|
||||||
|
|
||||||
|
sstr <<std::endl << "pykd bootstrapper version: " << PYKDEXT_VERSION_MAJOR << '.' << PYKDEXT_VERSION_MINOR << '.'
|
||||||
|
<< PYKDEXT_VERSION_SUBVERSION << '.' << PYKDEXT_VERSION_BUILDNO << std::endl;
|
||||||
|
|
||||||
|
std::list<InterpreterDesc> 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)
|
for (const InterpreterDesc& desc : interpreterList)
|
||||||
sstr << "* ";
|
{
|
||||||
else
|
if ( defaultMajor == desc.majorVersion && defaultMinor == desc.minorVersion)
|
||||||
sstr << " ";
|
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<IDebugControl> 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<IDebugControl> control = client;
|
||||||
|
|
||||||
|
control->ControlledOutput(
|
||||||
|
DEBUG_OUTCTL_THIS_CLIENT,
|
||||||
|
DEBUG_OUTPUT_ERROR,
|
||||||
|
e.what()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sstr << std::endl;
|
|
||||||
|
|
||||||
CComQIPtr<IDebugControl> control = client;
|
|
||||||
|
|
||||||
control->ControlledOutput(
|
|
||||||
DEBUG_OUTCTL_THIS_CLIENT,
|
|
||||||
DEBUG_OUTPUT_NORMAL,
|
|
||||||
sstr.str().c_str()
|
|
||||||
);
|
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user