mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 03:23:23 +08:00
[pykd_ext_2.0] fixed : pykd is not initialized exception
git-svn-id: https://pykd.svn.codeplex.com/svn@90999 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
d1b185601a
commit
332c5efc14
@ -515,30 +515,39 @@ void PyModule::deactivate()
|
|||||||
|
|
||||||
void PyModule::checkPykd()
|
void PyModule::checkPykd()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
PyObject *mainName = 0, *mainMod = 0, *globals = 0, *result = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
if (m_pykdInit)
|
if (m_pykdInit)
|
||||||
return;
|
break;
|
||||||
|
|
||||||
PyObject* pykdMod = PyImport_ImportModule("pykd");
|
mainName = isPy3 ? PyUnicode_FromString("__main__") : PyString_FromString("__main__");
|
||||||
|
if (!mainName)
|
||||||
|
break;
|
||||||
|
|
||||||
|
mainMod = PyImport_Import(mainName);
|
||||||
|
if (!mainMod)
|
||||||
|
break;
|
||||||
|
|
||||||
|
globals = PyObject_GetAttrString(mainMod, "__dict__");
|
||||||
|
if (!globals)
|
||||||
|
break;
|
||||||
|
|
||||||
|
result = PyRun_String("__import__('pykd').initialize()\n", Py_file_input, globals, globals);
|
||||||
|
if (!result)
|
||||||
|
break;
|
||||||
|
|
||||||
|
m_pykdInit = true;
|
||||||
|
|
||||||
|
} while( false);
|
||||||
|
|
||||||
if (!pykdMod)
|
|
||||||
{
|
|
||||||
PyObject* mainName = isPy3 ? PyUnicode_FromString("__main__") : PyString_FromString("__main__");
|
|
||||||
PyObject* mainMod = PyImport_Import(mainName);
|
|
||||||
PyObject* globals = PyObject_GetAttrString(mainMod, "__dict__");
|
|
||||||
PyObject* result = PyRun_String("__import__('pykd').initialize()\n", Py_file_input, globals, globals);
|
|
||||||
if (mainName) Py_DecRef(mainName);
|
if (mainName) Py_DecRef(mainName);
|
||||||
if (mainMod) Py_DecRef(mainMod);
|
if (mainMod) Py_DecRef(mainMod);
|
||||||
if (globals) Py_DecRef(globals);
|
if (globals) Py_DecRef(globals);
|
||||||
if (result) Py_DecRef(result);
|
if (result) Py_DecRef(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pykdMod) Py_DecRef(pykdMod);
|
|
||||||
|
|
||||||
m_pykdInit = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PythonInterpreter* activateInterpreter(bool global, int majorVersion, int minorVersion)
|
PythonInterpreter* activateInterpreter(bool global, int majorVersion, int minorVersion)
|
||||||
{
|
{
|
||||||
return PythonSingleton::get()->getInterpreter(majorVersion, minorVersion, global);
|
return PythonSingleton::get()->getInterpreter(majorVersion, minorVersion, global);
|
||||||
|
@ -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 1
|
#define PYKDEXT_VERSION_BUILDNO 3
|
||||||
|
|
||||||
#define __VER_STR2__(x) #x
|
#define __VER_STR2__(x) #x
|
||||||
#define __VER_STR1__(x) __VER_STR2__(x)
|
#define __VER_STR1__(x) __VER_STR2__(x)
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "pyinterpret.h"
|
#include "pyinterpret.h"
|
||||||
#include "pyapi.h"
|
#include "pyapi.h"
|
||||||
#include "pyclass.h"
|
#include "pyclass.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
@ -132,15 +133,19 @@ info(
|
|||||||
PCSTR args
|
PCSTR args
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
std::list<InterpreterDesc> interpreterList = getInstalledInterpreter();
|
|
||||||
std::stringstream sstr;
|
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 defaultMajor;
|
||||||
int defaultMinor;
|
int defaultMinor;
|
||||||
|
|
||||||
getDefaultPythonVersion(defaultMajor, defaultMinor);
|
getDefaultPythonVersion(defaultMajor, defaultMinor);
|
||||||
|
|
||||||
sstr << std::endl << "Installed python" << std::endl << std::endl;
|
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::setw(16) << std::left << "Version:" << std::setw(12) << std::left << "Status: " << std::left << "Image:" << std::endl;
|
||||||
sstr << "------------------------------------------------------------------------------" << std::endl;
|
sstr << "------------------------------------------------------------------------------" << std::endl;
|
||||||
if (interpreterList.size() > 0)
|
if (interpreterList.size() > 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user