[!] bug fixed: issue #7717 ( !py command failed to find standart modules )

[!] bug fixed: issue #7718 ( sys.argv[0] does not contain script name )

git-svn-id: https://pykd.svn.codeplex.com/svn@57921 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2010-11-22 08:47:24 +00:00
parent 2599f9885f
commit 17c51fac01
3 changed files with 25 additions and 24 deletions

View File

@ -262,27 +262,20 @@ py( PDEBUG_CLIENT4 client, PCSTR args)
if ( argsList.size() == 0 )
return S_OK;
if ( argsList.size() > 1 )
{
char **pythonArgs = new char* [ argsList.size() - 1 ];
char **pythonArgs = new char* [ argsList.size() ];
for ( size_t i = 0; i < argsList.size() - 1; ++i )
pythonArgs[i] = const_cast<char*>( argsList[i+1].c_str() );
for ( size_t i = 0; i < argsList.size(); ++i )
pythonArgs[i] = const_cast<char*>( argsList[i].c_str() );
PySys_SetArgv( (int)argsList.size() - 1, pythonArgs );
PySys_SetArgv( (int)argsList.size(), pythonArgs );
delete[] pythonArgs;
}
else
{
char *emptyParam = "";
PySys_SetArgv( 1, &emptyParam );
}
// íàéòè ïóòü ê ôàéëó
std::string fullFileName;
std::string filePath;
DbgPythonPath dbgPythonPath;
if ( dbgPythonPath.findPath( argsList[0], fullFileName, filePath ) )
{
@ -453,7 +446,7 @@ pythonpath( PDEBUG_CLIENT4 client, PCSTR args )
SetupDebugEngine( client, &ext );
dbgExt = &ext;
DbgPrint::dprintln( dbgPythonPath.getStr() );
//DbgPrint::dprintln( dbgPythonPath.getStr() );
return S_OK;
}

View File

@ -3,14 +3,12 @@
#include "dbgpath.h"
#include <boost/tokenizer.hpp>
#include <boost/python.hpp>
///////////////////////////////////////////////////////////////////////////////
DbgPythonPath &dbgPythonPath = DbgPythonPath();
///////////////////////////////////////////////////////////////////////////////
DbgPythonPath::DbgPythonPath()
{
DWORD enviromentSize = 0;
@ -62,6 +60,16 @@ DbgPythonPath::findPath(
std::string &fullFileName,
std::string &filePath ) const
{
std::vector< std::string > extPathList;
boost::python::object sys = boost::python::import( "sys");
boost::python::list pathList( sys.attr("path") );
boost::python::ssize_t n = boost::python::len(pathList);
for(boost::python::ssize_t i=0;i<n;i++)
extPathList.push_back( boost::python::extract<std::string>( pathList[i] ) );
bool pyExt = fileName.rfind( ".py" ) == fileName.length() - 3;
// 1. Èùåì â ðàáî÷åé äèðåêòîðèè
@ -97,9 +105,9 @@ DbgPythonPath::findPath(
// 2. Èùåì âî âñåõ äèðåêòîðèÿõ, óêàçàííûõ â m_pathList
std::vector<std::string>::const_iterator it = m_pathList.begin();
std::vector<std::string>::const_iterator it = extPathList.begin();
for ( ; it != m_pathList.end(); ++it )
for ( ; it != extPathList.end(); ++it )
{
DWORD bufSize =
SearchPathA(

View File

@ -27,7 +27,7 @@ private:
};
extern DbgPythonPath& dbgPythonPath;
//extern DbgPythonPath& dbgPythonPath;
///////////////////////////////////////////////////////////////////////////////