diff --git a/pykd-0.3-2013.sln b/pykd-0.3-2013.sln
index 900819c..8917209 100644
--- a/pykd-0.3-2013.sln
+++ b/pykd-0.3-2013.sln
@@ -1,7 +1,7 @@
п»ї
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
-VisualStudioVersion = 12.0.21005.1
+VisualStudioVersion = 12.0.40629.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}"
EndProject
@@ -25,7 +25,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D1F122
.nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{D1F1222A-A12B-4FD7-91A0-0AB6393A3169}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget (2)", ".nuget (2)", "{A13C500A-7AAF-4BDA-80F1-C59882D0AE58}"
ProjectSection(SolutionItems) = preProject
.nuget\NuGet.Config = .nuget\NuGet.Config
.nuget\NuGet.exe = .nuget\NuGet.exe
@@ -56,63 +56,111 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_2.7|Win32 = Debug_2.7|Win32
Debug_2.7|x64 = Debug_2.7|x64
+ Debug_3.5|Win32 = Debug_3.5|Win32
+ Debug_3.5|x64 = Debug_3.5|x64
Release_2.7|Win32 = Release_2.7|Win32
Release_2.7|x64 = Release_2.7|x64
+ Release_3.5|Win32 = Release_3.5|Win32
+ Release_3.5|x64 = Release_3.5|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|Win32.Build.0 = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
+ {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.5|Win32.ActiveCfg = Debug|Any CPU
+ {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_2.7|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_2.7|x64.ActiveCfg = Release|Any CPU
+ {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.5|Win32.ActiveCfg = Release|Any CPU
+ {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_2.7|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
+ {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.5|Win32.ActiveCfg = Debug|Any CPU
+ {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_2.7|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_2.7|x64.ActiveCfg = Release|Any CPU
+ {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.5|Win32.ActiveCfg = Release|Any CPU
+ {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_2.7|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
+ {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.5|Win32.ActiveCfg = Debug|Any CPU
+ {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_2.7|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_2.7|x64.ActiveCfg = Release|Any CPU
+ {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.5|Win32.ActiveCfg = Release|Any CPU
+ {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|Win32.ActiveCfg = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|Win32.Build.0 = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.Build.0 = Debug|x64
- {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|Win32.ActiveCfg = Release_Static|Win32
- {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|Win32.Build.0 = Release_Static|Win32
- {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.ActiveCfg = Release_Static|x64
- {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.Build.0 = Release_Static|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.5|Win32.ActiveCfg = Debug|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.5|Win32.Build.0 = Debug|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.5|x64.ActiveCfg = Debug|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.5|x64.Build.0 = Debug|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|Win32.ActiveCfg = Release|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|Win32.Build.0 = Release|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.ActiveCfg = Release|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.Build.0 = Release|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.5|Win32.ActiveCfg = Release_Static|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.5|Win32.Build.0 = Release_Static|Win32
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.5|x64.ActiveCfg = Release_Static|x64
+ {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.5|x64.Build.0 = Release_Static|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|Win32.ActiveCfg = Debug_2.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|Win32.Build.0 = Debug_2.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|x64.ActiveCfg = Debug_2.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|x64.Build.0 = Debug_2.7|x64
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.5|Win32.ActiveCfg = Debug_3.5|Win32
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.5|Win32.Build.0 = Debug_3.5|Win32
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.5|x64.ActiveCfg = Debug_3.5|x64
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.5|x64.Build.0 = Debug_3.5|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|Win32.ActiveCfg = Release_2.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|Win32.Build.0 = Release_2.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|x64.ActiveCfg = Release_2.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|x64.Build.0 = Release_2.7|x64
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.5|Win32.ActiveCfg = Release_3.5|Win32
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.5|Win32.Build.0 = Release_3.5|Win32
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.5|x64.ActiveCfg = Release_3.5|x64
+ {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.5|x64.Build.0 = Release_3.5|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.Build.0 = Debug|x64
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.5|Win32.ActiveCfg = Debug|Win32
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.5|Win32.Build.0 = Debug|Win32
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.5|x64.ActiveCfg = Debug|x64
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.5|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.ActiveCfg = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.Build.0 = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.ActiveCfg = Release|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.Build.0 = Release|x64
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.ActiveCfg = Release|Win32
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.Build.0 = Release|Win32
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.ActiveCfg = Release|x64
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.Build.0 = Release|x64
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|Win32.ActiveCfg = Debug_2.7|Win32
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|Win32.Build.0 = Debug_2.7|Win32
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|x64.ActiveCfg = Debug_2.7|x64
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_2.7|x64.Build.0 = Debug_2.7|x64
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|Win32.ActiveCfg = Debug_2.7|Win32
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|Win32.Build.0 = Debug_2.7|Win32
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|x64.ActiveCfg = Debug_2.7|x64
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Debug_3.5|x64.Build.0 = Debug_2.7|x64
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|Win32.ActiveCfg = Release_2.7|Win32
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|Win32.Build.0 = Release_2.7|Win32
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|x64.ActiveCfg = Release_2.7|x64
{CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_2.7|x64.Build.0 = Release_2.7|x64
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|Win32.ActiveCfg = Release_2.7|Win32
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|Win32.Build.0 = Release_2.7|Win32
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|x64.ActiveCfg = Release_2.7|x64
+ {CA0252CE-EF81-4DD8-A96F-A0E0E3644B7B}.Release_3.5|x64.Build.0 = Release_2.7|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {3F0BE77E-19B0-4192-B432-44A25805BCB8} = {5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}
- {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF} = {5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}
{EEFC9510-DFA7-439E-801E-48FCE72766AD} = {A7AF87D2-983B-4B3A-823F-5A2C6989672E}
+ {3F0BE77E-19B0-4192-B432-44A25805BCB8} = {5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}
{6471FEDC-3129-410F-BFFC-4BC89707E5EC} = {AAB21DD2-B0EE-493E-8415-5195F18879EB}
+ {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF} = {5A3C2DA6-AE91-4025-AC03-A58BD03CEBCD}
EndGlobalSection
EndGlobal
diff --git a/pykd/packages.pykd_vc120.config b/pykd/packages.pykd_vc120.config
index a29ebfd..3930ec6 100644
--- a/pykd/packages.pykd_vc120.config
+++ b/pykd/packages.pykd_vc120.config
@@ -7,4 +7,5 @@
-
\ No newline at end of file
+
+
diff --git a/pykd/pykd_vc120.vcxproj b/pykd/pykd_vc120.vcxproj
index 412d088..7678cbe 100644
--- a/pykd/pykd_vc120.vcxproj
+++ b/pykd/pykd_vc120.vcxproj
@@ -9,6 +9,14 @@
Debug_2.7
x64
+
+ Debug_3.5
+ Win32
+
+
+ Debug_3.5
+ x64
+
Release_2.7
Win32
@@ -17,6 +25,14 @@
Release_2.7
x64
+
+ Release_3.5
+ Win32
+
+
+ Release_3.5
+ x64
+
{C4C45791-0201-4406-BC5C-A384B01E3BF5}
@@ -32,12 +48,28 @@
true
Unicode
v120_xp
+ 2.7
+
+
+ DynamicLibrary
+ true
+ Unicode
+ v120_xp
+ 3.5
DynamicLibrary
true
Unicode
v120_xp
+ 2.7
+
+
+ DynamicLibrary
+ true
+ Unicode
+ v120_xp
+ 3.5
DynamicLibrary
@@ -45,13 +77,37 @@
true
Unicode
v120_xp
+ 2.7
+
+ DynamicLibrary
+ false
+ true
+ Unicode
+ v120_xp
+ 3.5
+
DynamicLibrary
false
true
Unicode
v120_xp
+ 2.7
+
+
+ DynamicLibrary
+ false
+ true
+ Unicode
+ v120_xp
+ 3.5
+
+
+ v120
+
+
+ v120
@@ -59,17 +115,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
- 50e91edb
+ 4bf1ae88
true
@@ -79,6 +148,14 @@
$(Platform)\$(Configuration)\
$(SolutionDir)out\$(Platform)\$(Configuration)\
+
+ true
+ .pyd
+ true
+ $(ProjectName)
+ $(Platform)\$(Configuration)\
+ $(SolutionDir)out\$(Platform)\$(Configuration)\
+
true
.pyd
@@ -87,6 +164,14 @@
$(SolutionDir)out\$(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
+
+ true
+ .pyd
+ true
+ $(ProjectName)
+ $(SolutionDir)out\$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
+
false
.pyd
@@ -94,6 +179,13 @@
$(Platform)\$(Configuration)\
$(SolutionDir)out\$(Platform)\$(Configuration)\
+
+ false
+ .pyd
+ $(ProjectName)
+ $(Platform)\$(Configuration)\
+ $(SolutionDir)out\$(Platform)\$(Configuration)\
+
false
.pyd
@@ -101,6 +193,14 @@
$(SolutionDir)out\$(Platform)\$(Configuration)\
$(Platform)\$(Configuration)\
+
+ false
+ .pyd
+ $(ProjectName)
+ $(SolutionDir)out\$(Platform)\$(Configuration)\
+ $(Platform)\$(Configuration)\
+
+
Use
@@ -123,6 +223,28 @@
+
+
+ Use
+ Level3
+ Disabled
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions)
+ $(ProjectDir)..\kdlibcpp\include;
+
+
+ Windows
+ true
+ pykd.def
+ %(AdditionalLibraryDirectories)
+
+
+ copy $(OutDir)..\Debug\targetapp.exe $(OutDir)
+
+
+
+
+
+
Use
@@ -145,6 +267,28 @@
+
+
+ Use
+ Level3
+ Disabled
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions)
+ $(ProjectDir)..\kdlibcpp\include;
+
+
+ Windows
+ true
+ pykd.def
+ %(AdditionalLibraryDirectories)
+
+
+ copy $(OutDir)..\Debug\targetapp.exe $(OutDir)
+
+
+
+
+
+
Level3
@@ -168,6 +312,30 @@
copy $(OutDir)..\Release\targetapp.exe $(OutDir)
+
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions)
+ $(ProjectDir)..\kdlibcpp\include
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+ true
+ pykd.def
+ %(AdditionalLibraryDirectories)
+
+
+ copy $(OutDir)..\Release\targetapp.exe $(OutDir)
+
+
Level3
@@ -191,6 +359,29 @@
copy $(OutDir)..\Release\targetapp.exe $(OutDir)
+
+
+ Level3
+ Use
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions)
+ $(ProjectDir)..\kdlibcpp\include;
+ MultiThreaded
+
+
+ Windows
+ true
+ true
+ true
+ pykd.def
+ %(AdditionalLibraryDirectories)
+
+
+ copy $(OutDir)..\Release\targetapp.exe $(OutDir)
+
+
@@ -216,20 +407,7 @@
-
- false
- false
-
-
-
-
- false
- false
-
-
-
-
-
+
@@ -241,9 +419,13 @@
Create
+ Create
Create
+ Create
Create
+ Create
Create
+ Create
@@ -265,7 +447,8 @@
-
+
+
@@ -279,6 +462,7 @@
+
diff --git a/pykd/stdafx.h b/pykd/stdafx.h
index de4f84f..f9920fd 100644
--- a/pykd/stdafx.h
+++ b/pykd/stdafx.h
@@ -11,7 +11,8 @@
// Windows Header Files:
#include
-#define BOOST_PYTHON_STATIC_LIB
+//#define BOOST_PYTHON_STATIC_MODULE
+//#define BOOST_PYTHON_STATIC_LIB
#pragma warning(push)
// 'return' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
diff --git a/pykd/variant.h b/pykd/variant.h
index 0305670..7f3ff39 100644
--- a/pykd/variant.h
+++ b/pykd/variant.h
@@ -32,11 +32,14 @@ public:
return var;
}
+#if PY_VERSION_HEX < 0x03000000
+
if ( PyInt_CheckExact( obj.ptr() ) )
{
var->m_variant.setLong( PyLong_AsLong( obj.ptr() ) );
return var;
}
+#endif
if ( _PyLong_Sign( obj.ptr() ) >= 0 )
var->m_variant.setULongLong( PyLong_AsUnsignedLongLong( obj.ptr() ) );
diff --git a/pykd/windbgext.cpp b/pykd/windbgext.cpp
index d1ce213..c3035a9 100644
--- a/pykd/windbgext.cpp
+++ b/pykd/windbgext.cpp
@@ -24,50 +24,56 @@ bool PykdExt::isInit() {
///////////////////////////////////////////////////////////////////////////////
+#if PY_VERSION_HEX >= 0x03000000
+
+extern "C" PyObject* PyInit_pykd();
+
+#else
+
extern "C" void initpykd();
+#endif
void PykdExt::setUp()
{
WindbgExtension::setUp();
- PyImport_AppendInittab("pykd", initpykd );
+#if PY_VERSION_HEX >= 0x03000000
- PyEval_InitThreads();
+ PyImport_AppendInittab("pykd", PyInit_pykd);
+
+#else
+
+ PyImport_AppendInittab("pykd", initpykd);
+
+#endif
Py_Initialize();
+ PyEval_InitThreads();
+
python::object main = boost::python::import("__main__");
- python::object main_namespace = main.attr("__dict__");
+ python::object global = main.attr("__dict__");
python::object pykd = python::import( "pykd" );
- // делаем аналог from pykd import *
- python::dict pykd_namespace( pykd.attr("__dict__") );
-
- python::list iterkeys( pykd_namespace.iterkeys() );
-
- for (int i = 0; i < boost::python::len(iterkeys); i++)
- {
- std::string key = boost::python::extract(iterkeys[i]);
-
- main_namespace[ key ] = pykd_namespace[ key ];
- }
-
python::object sys = python::import("sys");
sys.attr("stdout") = python::object( pykd::DbgOut() );
sys.attr("stderr") = python::object( pykd::DbgOut() );
sys.attr("stdin") = python::object( pykd::DbgIn() );
- python::list pathList(sys.attr("path"));
+ python::list pathList = python::extract(sys.attr("path"));
python::ssize_t n = python::len(pathList);
for (python::ssize_t i = 0; i < n ; i++)
m_paths.push_back(boost::python::extract(pathList[i]));
+ python::exec("import pykd\n", global);
+ python::exec("from pykd import *\n", global);
+
m_pyState = PyEval_SaveThread();
}
@@ -159,7 +165,29 @@ KDLIB_EXT_COMMAND_METHOD_IMPL(PykdExt, py)
}
else
{
- std::string scriptFileName = getScriptFileName( args[0] );
+
+ std::string scriptFileName = getScriptFileName(args[0]);
+
+#if PY_VERSION_HEX >= 0x03000000
+
+ // устанавиливаем питоновские аргументы
+ wchar_t **pythonArgs = new wchar_t* [ args.size() ];
+
+ std::wstring scriptFileNameW = _bstr_t(scriptFileName.c_str());
+
+ pythonArgs[0] = const_cast(scriptFileNameW.c_str());
+
+ for (size_t i = 1; i < args.size(); ++i)
+ {
+ std::wstring argw = _bstr_t(args[i].c_str());
+ pythonArgs[i] = const_cast(argw.c_str());
+ }
+
+ PySys_SetArgv( (int)args.size(), pythonArgs );
+
+ delete[] pythonArgs;
+
+#else
// устанавиливаем питоновские аргументы
char **pythonArgs = new char* [ args.size() ];
@@ -172,6 +200,8 @@ KDLIB_EXT_COMMAND_METHOD_IMPL(PykdExt, py)
PySys_SetArgv( (int)args.size(), pythonArgs );
delete[] pythonArgs;
+#endif
+
// получаем достпу к глобальному мапу ( нужен для вызова exec_file )
python::object main = python::import("__main__");