Compare commits

...

48 Commits

Author SHA1 Message Date
Colin Xu
98980c4414 Enable pykd for python 3.10.
Signed-off-by: Colin Xu <colin.xu@gmail.com>
2023-02-21 20:50:54 -08:00
Colin Xu
bd66633136 Update kdlibcpp submodule to fork repo.
Signed-off-by: Colin Xu <Colin.Xu@gmail.com>
2023-02-17 16:21:18 +08:00
ussrhero
eeabea3f8d Update README.md 2020-10-21 14:16:34 -04:00
ussrhero
29a0fc0c09 Merge branch '0.3.4.15' into '0.3.2'
0.3.4.15

See merge request pykd/pykd!12
2020-10-21 14:14:57 -04:00
ussrhero
22cf84b27e 0.3.4.15 2020-10-21 14:14:57 -04:00
ussrhero
8bd990fcf6 Merge branch '0.3.4.14' into '0.3.2'
0.3.4.14

See merge request pykd/pykd!11
2020-05-27 17:56:23 -04:00
ussrhero
6e966b96be added getDumpFormat ( returns format of the dump ) 2020-05-28 00:28:30 +03:00
ussrhero
8167656e04 added getDumpType ( returns dump's type ) 2020-05-28 00:03:38 +03:00
ussrhero
cf27e9072d change kdlibcpp version to 0.3.4.15 2020-05-27 21:46:44 +03:00
ussrhero
fe85b1e6a5 fixed getVaState function 2020-04-04 10:57:42 +03:00
ussrhero
46382d24fa Merge branch '0.3.4.13' into 0.3.2 2020-03-28 11:58:08 +03:00
ussrhero
7bc86e0c53 fixed tests 2020-03-28 11:49:50 +03:00
ussrhero
5bfa947185 set kdlib to 1.2.14 2020-03-21 18:32:34 +03:00
ussrhero
c36dafa380 Merge branch 'm417z/pykd-patch-1' into 0.3.2 2020-03-21 12:39:03 +03:00
ussrhero
d8f99d73e8 Merge branch 'patch-2' into '0.3.2'
Update nbl.py - fixed typos

See merge request pykd/pykd!9
2020-03-20 17:04:38 -04:00
Michael
33787db547 Update nbl.py - fixed typos 2020-03-17 12:45:54 -04:00
Michael
cccc1103b1 Update pymod.cpp - fix a couple of typos 2020-03-17 12:43:09 -04:00
ussrhero
dfb935f3f8 added : additional parameter for debugCommand routine to control an output mask 2020-03-16 23:12:47 +03:00
ussrhero
fce592816d added : new typeInfo cache 2020-03-16 21:45:12 +03:00
ussrhero
f9a0361d85 started work at 0.3.4.13 2020-03-16 21:41:53 +03:00
ussrhero
af9127d5d5 Update README.md 2020-02-15 05:18:49 -05:00
ussrhero
25fbe8a6f6 added : getVaState ( state of memory: commited, reserved, free)
added : getVaType ( type of memory: image, mapped, private )
added : getVaAttributes ( returns tuple of (protect, state, type) )
2020-02-14 00:52:58 +03:00
ussrhero
fcf6d9927b fixed issue #65 (getting element by index from pointer works incorrectly) 2020-02-09 20:38:54 +03:00
ussrhero
eb6b11a55d fixed issue #64 ( evalExpr raise exception with template with const class ) 2020-02-08 14:36:51 +03:00
ussrhero
b2d7e2d7dc fixed printing struct with const members 2020-02-03 00:12:26 +03:00
ussrhero
52463eb340 fixed issue #61 ( evalExpr raises exception for code with wchar_t as a template argument ) 2020-01-04 23:51:37 +03:00
ussrhero
0f0c5667df started work at 0.3.4.12 2020-01-04 23:43:11 +03:00
ussrhero
be01beb07f change kdlibcpp version to 1.2.12 2020-01-02 15:54:31 +03:00
ussrhero
ad341bee9f fixed comparing typeInfo with None 2019-12-29 12:48:52 +03:00
ussrhero
a447202c6a revert changes for #50 2019-12-29 00:17:35 +03:00
ussrhero
c8d153a1d4 fixed functions description 2019-12-15 13:36:52 +03:00
ussrhero
0a1fc9bee3 Merge branch 'fix_amd64_cv_allreg' into '0.3.2'
Fix amd64 CV_ALLREG_VFRAME

See merge request pykd/pykd!7
2019-11-28 07:03:13 -05:00
Mikhail I. Izmestev
b17ac9dd05 update kdlib with fix for amd64 CV_ALLREG_VFRAME 2019-11-28 11:34:26 +04:00
Mikhail I. Izmestev
897b7fc82d add test cases for symbols with CV_ALLREG_VFRAME register 2019-11-28 11:33:29 +04:00
ussrhero
1af548beda python38 support 2019-10-20 09:37:30 +03:00
ussrhero
d68a9d82de updated wiki generator 2019-10-19 23:25:19 +03:00
ussrhero
c0943dd033 updated kdlibcpp version to 1.2.11 2019-10-02 22:44:00 +03:00
ussrhero
e22b4cd38a updated kdlibcpp version to 1.2.11 2019-10-02 00:28:11 +03:00
ussrhero
a99b758dd9 reworked symbol enumeration 2019-09-29 21:55:29 +03:00
ussrhero
15a99d60de updated kdlibcpp 2019-09-24 01:38:28 +03:00
ussrhero
490730dabc added : getSymbolEnumeratorFromSource routine (create symbol enumerator for source code) 2019-09-19 00:41:46 +03:00
ussrhero
85028a9a1b added TypeInfo.isConstField method (return True if a field is a const field) 2019-09-17 00:30:20 +03:00
ussrhero
7d9b0faffa added TypeInfo.isStaticField method ( return True if a field is a static field ) 2019-09-17 00:20:24 +03:00
ussrhero
0450a3abdf typedVar.members methods ( return defined members of class, not inherited) 2019-09-17 00:17:09 +03:00
ussrhero
a0f0905cf9 Merge branch '0.3.2' of https://githomelab.ru/pykd/pykd into 0.3.2 2019-09-02 23:48:10 +03:00
ussrhero
4de8114c3e added setStatusMessage ( set a message at a windbg status bar ) 2019-09-02 23:47:58 +03:00
Administrator
c28dac3979 Update README.md 2019-08-04 15:06:28 -04:00
ussrhero
b5f56b61c9 Update README.md 2019-08-03 05:48:13 -04:00
29 changed files with 3318 additions and 2312 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.pyc
.vs

2
.gitmodules vendored
View File

@ -1,3 +1,3 @@
[submodule "kdlibcpp"] [submodule "kdlibcpp"]
path = kdlibcpp path = kdlibcpp
url = https://githomelab.ru/kdlibcpp/kdlibcpp.git url = https://github.com/ivellioscolin/kdlibcpp.git

View File

@ -1,4 +1,4 @@
# Pykd - python extension for WinDBG # Pykd - not only python extension for WinDBG
## Purpose ## Purpose
This project can help to automate debugging and crash dump analysis using Python. It allows one to take the best from both worlds: the expressiveness and convenience of Python with the power of WinDbg! This project can help to automate debugging and crash dump analysis using Python. It allows one to take the best from both worlds: the expressiveness and convenience of Python with the power of WinDbg!
@ -6,17 +6,36 @@ This project can help to automate debugging and crash dump analysis using Python
## Why do I need this? ## Why do I need this?
If you want to automate the debugger but dislike the WinDbg built-in script machine syntax it's time to try again using the handy and powerful Python language. Even if you don't want to create your own script, maybe some existing scripts will be of interest to you? If you want to automate the debugger but dislike the WinDbg built-in script machine syntax it's time to try again using the handy and powerful Python language. Even if you don't want to create your own script, maybe some existing scripts will be of interest to you?
## Pykd bootstrapper ## Getting started
Use it to run pykd within windbg. [link](https://githomelab.ru/pykd/pykd-ext) * You should have installed python. Supported python: 2.7, 3.5 - 3.9
* Install pykd with command: 'pip install pykd'
* Use windbg extension (bootstrapper) to run pykd with windbg
## Releases: ## Windbg extension (bootstarpper)
[All Release](/../wikis/All Releases) Use it to run pykd within windbg.
[PyPi](https://pypi.org/project/pykd) [Home Page](https://githomelab.ru/pykd/pykd-ext)
[Download](https://githomelab.ru/pykd/pykd-ext/wikis/Downloads)
## Releases
Just run 'pip install pykd' to install or 'pip install pykd --upgrade' to upgrade to the last version
[PyPi](https://pypi.org/project/pykd)
[All Releases](/../wikis/All Releases)
## Documentation ## Documentation
[Wiki Home](/../wikis/Home) [Wiki Home](/../wikis/Home)
[User Manual](/../wikis/User Manual rus) [User Manual](/../wikis/User Manual rus)
[API Reference](/../wikis/API Reference) [API Reference](/../wikis/API Reference)
## Useful tools for pykd and WinDBG
[windbg-pack](https://githomelab.ru/pykd/windbg-pack)
Set of python scripts for WinDBG
[pykdwin](https://githomelab.ru/pykd/pykdwin)
A library with auxiliary modules for writing small pykd scripts and daily use.
[windbg-kernel](https://githomelab.ru/pykd/windbg-kernel)
Set of pykd script for kernel debugging
## How to build ? ## How to build ?
* install VS 2017 * install VS 2017
@ -34,4 +53,14 @@ https://git-scm.com/
git clone --recurse-submodules https://githomelab.ru/pykd/pykd.git local_dir git clone --recurse-submodules https://githomelab.ru/pykd/pykd.git local_dir
``` ```
* open pykd.sln * open pykd.sln
* choose a python version and a target platform then build pykd projects * choose a python version and a target platform then build pykd projects
## Projects used pykd
[mona.py](https://github.com/corelan/mona)
the exploit writer's swiss army knife
[flare-dbg](https://github.com/fireeye/flare-dbg)
flare-dbg is a project meant to aid malware reverse engineers in rapidly developing debugger scripts.
[voltron](https://github.com/snare/voltron)
Voltron is an extensible debugger UI toolkit written in Python

@ -1 +1 @@
Subproject commit c79f0797228b1436c41b700f4564eb986388bb35 Subproject commit e54598d2f904acab23d340c93ce77c551a396ecb

150
pykd.sln
View File

@ -42,75 +42,126 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_2.7|Win32 = Debug_2.7|Win32 Debug_2.7|Win32 = Debug_2.7|Win32
Debug_2.7|x64 = Debug_2.7|x64 Debug_2.7|x64 = Debug_2.7|x64
Debug_3.10|Win32 = Debug_3.10|Win32
Debug_3.10|x64 = Debug_3.10|x64
Debug_3.5|Win32 = Debug_3.5|Win32 Debug_3.5|Win32 = Debug_3.5|Win32
Debug_3.5|x64 = Debug_3.5|x64 Debug_3.5|x64 = Debug_3.5|x64
Debug_3.6|Win32 = Debug_3.6|Win32 Debug_3.6|Win32 = Debug_3.6|Win32
Debug_3.6|x64 = Debug_3.6|x64 Debug_3.6|x64 = Debug_3.6|x64
Debug_3.7|Win32 = Debug_3.7|Win32 Debug_3.7|Win32 = Debug_3.7|Win32
Debug_3.7|x64 = Debug_3.7|x64 Debug_3.7|x64 = Debug_3.7|x64
Debug_3.8|Win32 = Debug_3.8|Win32
Debug_3.8|x64 = Debug_3.8|x64
Debug_3.9|Win32 = Debug_3.9|Win32
Debug_3.9|x64 = Debug_3.9|x64
Release_2.7|Win32 = Release_2.7|Win32 Release_2.7|Win32 = Release_2.7|Win32
Release_2.7|x64 = Release_2.7|x64 Release_2.7|x64 = Release_2.7|x64
Release_3.10|Win32 = Release_3.10|Win32
Release_3.10|x64 = Release_3.10|x64
Release_3.5|Win32 = Release_3.5|Win32 Release_3.5|Win32 = Release_3.5|Win32
Release_3.5|x64 = Release_3.5|x64 Release_3.5|x64 = Release_3.5|x64
Release_3.6|Win32 = Release_3.6|Win32 Release_3.6|Win32 = Release_3.6|Win32
Release_3.6|x64 = Release_3.6|x64 Release_3.6|x64 = Release_3.6|x64
Release_3.7|Win32 = Release_3.7|Win32 Release_3.7|Win32 = Release_3.7|Win32
Release_3.7|x64 = Release_3.7|x64 Release_3.7|x64 = Release_3.7|x64
Release_3.8|Win32 = Release_3.8|Win32
Release_3.8|x64 = Release_3.8|x64
Release_3.9|Win32 = Release_3.9|Win32
Release_3.9|x64 = Release_3.9|x64
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution 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.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|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_2.7|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.10|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.10|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|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.8|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.8|x64.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.9|Win32.ActiveCfg = Debug|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.9|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|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_2.7|x64.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_2.7|x64.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.10|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.10|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|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.5|x64.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.6|Win32.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.6|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.6|x64.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.6|x64.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.7|Win32.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.7|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.7|x64.ActiveCfg = Release|Any CPU {3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.7|x64.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.8|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.8|x64.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.9|Win32.ActiveCfg = Release|Any CPU
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Release_3.9|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|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.10|Win32.ActiveCfg = Debug_3.10|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.10|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|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.8|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.8|x64.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.9|Win32.ActiveCfg = Debug|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Debug_3.9|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|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_2.7|x64.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_2.7|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.10|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.10|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|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.5|x64.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.6|Win32.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.6|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.6|x64.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.6|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.7|Win32.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.7|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.7|x64.ActiveCfg = Release|Any CPU {6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.7|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.8|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.8|x64.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.9|Win32.ActiveCfg = Release|Any CPU
{6471FEDC-3129-410F-BFFC-4BC89707E5EC}.Release_3.9|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|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.10|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.10|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|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.5|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.6|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.6|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.7|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.7|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.8|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.8|x64.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.9|Win32.ActiveCfg = Debug|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Debug_3.9|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|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_2.7|x64.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_2.7|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.10|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.10|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|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.5|x64.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.5|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.6|Win32.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.6|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.6|x64.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.6|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.7|Win32.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.7|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.7|x64.ActiveCfg = Release|Any CPU {D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.7|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.8|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.8|x64.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.9|Win32.ActiveCfg = Release|Any CPU
{D78837DC-BF31-4FC4-88A5-7F2FADAFA795}.Release_3.9|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.ActiveCfg = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|Win32.Build.0 = 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.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.Build.0 = Debug|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.Build.0 = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.10|Win32.ActiveCfg = Debug_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.10|x64.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.10|x64.Build.0 = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.5|Win32.ActiveCfg = Debug|Win32 {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|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.ActiveCfg = Debug|x64
@ -123,10 +174,22 @@ Global
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|Win32.Build.0 = Debug|Win32 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|Win32.Build.0 = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|x64.ActiveCfg = Debug|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|x64.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|x64.Build.0 = Debug|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.7|x64.Build.0 = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.8|Win32.ActiveCfg = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.8|Win32.Build.0 = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.8|x64.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.8|x64.Build.0 = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.9|Win32.ActiveCfg = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.9|Win32.Build.0 = Debug|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.9|x64.ActiveCfg = Debug|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_3.9|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.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|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.ActiveCfg = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.Build.0 = Release_Static|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.Build.0 = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.10|Win32.ActiveCfg = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.10|Win32.Build.0 = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.10|x64.ActiveCfg = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.10|x64.Build.0 = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.5|Win32.ActiveCfg = Release_Static|Win32 {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|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.ActiveCfg = Release_Static|x64
@ -139,10 +202,22 @@ Global
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|Win32.Build.0 = Release_Static|Win32 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|Win32.Build.0 = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|x64.ActiveCfg = Release_Static|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|x64.ActiveCfg = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|x64.Build.0 = Release_Static|x64 {3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.7|x64.Build.0 = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.8|Win32.ActiveCfg = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.8|Win32.Build.0 = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.8|x64.ActiveCfg = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.8|x64.Build.0 = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.9|Win32.ActiveCfg = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.9|Win32.Build.0 = Release_Static|Win32
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.9|x64.ActiveCfg = Release_Static|x64
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_3.9|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.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|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.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_2.7|x64.Build.0 = Debug_2.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.10|Win32.ActiveCfg = Debug_3.10|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.10|Win32.Build.0 = Debug_3.10|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.10|x64.ActiveCfg = Debug_3.10|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.10|x64.Build.0 = Debug_3.10|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.5|Win32.ActiveCfg = Debug_3.5|Win32 {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|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.ActiveCfg = Debug_3.5|x64
@ -155,10 +230,22 @@ Global
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|Win32.Build.0 = Debug_3.7|Win32 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|Win32.Build.0 = Debug_3.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|x64.ActiveCfg = Debug_3.7|x64 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|x64.ActiveCfg = Debug_3.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|x64.Build.0 = Debug_3.7|x64 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.7|x64.Build.0 = Debug_3.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.8|Win32.ActiveCfg = Debug_3.8|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.8|Win32.Build.0 = Debug_3.8|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.8|x64.ActiveCfg = Debug_3.8|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.8|x64.Build.0 = Debug_3.8|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.9|Win32.ActiveCfg = Debug_3.9|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.9|Win32.Build.0 = Debug_3.9|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.9|x64.ActiveCfg = Debug_3.9|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.9|x64.Build.0 = Debug_3.9|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|Win32.ActiveCfg = Release_2.7|Win32 {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|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.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_2.7|x64.Build.0 = Release_2.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.10|Win32.ActiveCfg = Release_3.10|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.10|Win32.Build.0 = Release_3.10|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.10|x64.ActiveCfg = Release_3.10|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.10|x64.Build.0 = Release_3.10|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.5|Win32.ActiveCfg = Release_3.5|Win32 {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|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.ActiveCfg = Release_3.5|x64
@ -171,10 +258,21 @@ Global
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|Win32.Build.0 = Release_3.7|Win32 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|Win32.Build.0 = Release_3.7|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|x64.ActiveCfg = Release_3.7|x64 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|x64.ActiveCfg = Release_3.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|x64.Build.0 = Release_3.7|x64 {C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.7|x64.Build.0 = Release_3.7|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.8|Win32.ActiveCfg = Release_3.8|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.8|Win32.Build.0 = Release_3.8|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.8|x64.ActiveCfg = Release_3.8|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.8|x64.Build.0 = Release_3.8|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.9|Win32.ActiveCfg = Release_3.9|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.9|Win32.Build.0 = Release_3.9|Win32
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.9|x64.ActiveCfg = Release_3.9|x64
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.9|x64.Build.0 = Release_3.9|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|Win32.ActiveCfg = Debug|Win32 {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|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.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.Build.0 = Debug|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.10|Win32.ActiveCfg = Debug_3.10|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.10|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.10|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.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.5|Win32.Build.0 = 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.ActiveCfg = Debug|x64
@ -187,22 +285,42 @@ Global
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|Win32.Build.0 = Debug|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|x64.ActiveCfg = Debug|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|x64.Build.0 = Debug|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.7|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.ActiveCfg = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.Build.0 = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.ActiveCfg = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.Build.0 = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.ActiveCfg = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.Build.0 = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.ActiveCfg = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.Build.0 = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.ActiveCfg = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.Build.0 = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.ActiveCfg = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.Build.0 = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.ActiveCfg = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|Win32.ActiveCfg = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.Build.0 = Release|Win32 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|Win32.Build.0 = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.ActiveCfg = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|x64.ActiveCfg = Release|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.Build.0 = Release|x64 {0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|x64.Build.0 = Release|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.8|Win32.ActiveCfg = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.8|Win32.Build.0 = Debug|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.8|x64.ActiveCfg = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.8|x64.Build.0 = Debug|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.9|Win32.ActiveCfg = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.9|Win32.Build.0 = Release|Win32
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.9|x64.ActiveCfg = Release|x64
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.9|x64.Build.0 = Release|x64
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -105,7 +105,11 @@ object BOOST_PYTHON_DECL exec_file(char const *filename, object global, object l
// should be 'char const *' but older python versions don't use 'const' yet. // should be 'char const *' but older python versions don't use 'const' yet.
char *f = const_cast<char *>(filename); char *f = const_cast<char *>(filename);
// Let python open the file to avoid potential binary incompatibilities. // Let python open the file to avoid potential binary incompatibilities.
#if PY_VERSION_HEX >= 0x03040000 #if PY_VERSION_HEX >= 0x030a0000
PyObject* fo = Py_BuildValue("s", f);
FILE* fs = _Py_fopen_obj(fo, "r");
Py_DECREF(fo);
#elif PY_VERSION_HEX >= 0x03040000
FILE *fs = _Py_fopen(f, "r"); FILE *fs = _Py_fopen(f, "r");
#elif PY_VERSION_HEX >= 0x03000000 #elif PY_VERSION_HEX >= 0x03000000
PyObject *fo = Py_BuildValue("s", f); PyObject *fo = Py_BuildValue("s", f);

View File

@ -11,6 +11,10 @@
<package id="Python35" version="3.5.1.1" targetFramework="Native" /> <package id="Python35" version="3.5.1.1" targetFramework="Native" />
<package id="Python36" version="3.6.0" targetFramework="Native" /> <package id="Python36" version="3.6.0" targetFramework="Native" />
<package id="Python37" version="1.0.0.1" targetFramework="Native" /> <package id="Python37" version="1.0.0.1" targetFramework="Native" />
<package id="Python38" version="3.8.0" targetFramework="Native" />
<package id="Python39" version="3.9.0" targetFramework="Native" />
<package id="python" version="3.10.10" allowedVersions="[3.10.0,3.11.0)" targetFramework="native" />
<package id="pythonx86" version="3.10.10" allowedVersions="[3.10.0,3.11.0)" targetFramework="native" />
<package id="clang-cmake" version="6.0.0.1" targetFramework="Native" /> <package id="clang-cmake" version="6.0.0.1" targetFramework="Native" />
<package id="llvm-cmake" version="6.0.0.1" targetFramework="Native" /> <package id="llvm-cmake" version="6.0.0.1" targetFramework="Native" />
</packages> </packages>

View File

@ -104,13 +104,13 @@ bool isKernelDebugging()
inline inline
python::object debugCommand( const std::wstring &command, bool suppressOutput = true) python::object debugCommand( const std::wstring &command, bool suppressOutput = true, const kdlib::OutputFlagsSet& captureFlags = kdlib::OutputFlag::Normal)
{ {
std::wstring debugResult; std::wstring debugResult;
{ {
AutoRestorePyState pystate; AutoRestorePyState pystate;
debugResult = kdlib::debugCommand(command, suppressOutput); debugResult = kdlib::debugCommand(command, suppressOutput, captureFlags);
} }
if (debugResult.size() > 0 ) if (debugResult.size() > 0 )
@ -147,6 +147,20 @@ void setOutputMask(const kdlib::OutputFlagsSet& outputMask)
kdlib::setOutputFlags(outputMask); kdlib::setOutputFlags(outputMask);
} }
inline
kdlib::DumpType getDumpType()
{
AutoRestorePyState pystate;
return kdlib::getDumpType();
}
inline
kdlib::DumpFormatFlagsSet getDumpFormat()
{
AutoRestorePyState pystate;
return kdlib::getDumpFormat();
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// processes end threads // processes end threads

View File

@ -49,6 +49,12 @@ inline void dinput(const std::wstring &str)
kdlib::dinput(str); kdlib::dinput(str);
} }
inline void setStatusMessage(const std::wstring &str)
{
AutoRestorePyState pystate;
kdlib::setStatusMessage(str);
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
class DbgOut : public kdlib::windbg::WindbgOut class DbgOut : public kdlib::windbg::WindbgOut

View File

@ -9,6 +9,14 @@
<Configuration>Debug_2.7</Configuration> <Configuration>Debug_2.7</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.10|Win32">
<Configuration>Debug_3.10</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.10|x64">
<Configuration>Debug_3.10</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.5|Win32"> <ProjectConfiguration Include="Debug_3.5|Win32">
<Configuration>Debug_3.5</Configuration> <Configuration>Debug_3.5</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -33,6 +41,22 @@
<Configuration>Debug_3.7</Configuration> <Configuration>Debug_3.7</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.8|Win32">
<Configuration>Debug_3.8</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.8|x64">
<Configuration>Debug_3.8</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.9|Win32">
<Configuration>Debug_3.9</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug_3.9|x64">
<Configuration>Debug_3.9</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_2.7|Win32"> <ProjectConfiguration Include="Release_2.7|Win32">
<Configuration>Release_2.7</Configuration> <Configuration>Release_2.7</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -41,6 +65,14 @@
<Configuration>Release_2.7</Configuration> <Configuration>Release_2.7</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release_3.10|Win32">
<Configuration>Release_3.10</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_3.10|x64">
<Configuration>Release_3.10</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_3.5|Win32"> <ProjectConfiguration Include="Release_3.5|Win32">
<Configuration>Release_3.5</Configuration> <Configuration>Release_3.5</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
@ -65,6 +97,22 @@
<Configuration>Release_3.7</Configuration> <Configuration>Release_3.7</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release_3.8|Win32">
<Configuration>Release_3.8</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_3.8|x64">
<Configuration>Release_3.8</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_3.9|Win32">
<Configuration>Release_3.9</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release_3.9|x64">
<Configuration>Release_3.9</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{C4C45791-0201-4406-BC5C-A384B01E3BF5}</ProjectGuid> <ProjectGuid>{C4C45791-0201-4406-BC5C-A384B01E3BF5}</ProjectGuid>
@ -108,6 +156,30 @@
<PythonVersion>3.7</PythonVersion> <PythonVersion>3.7</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG> <LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.8</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.9</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.10</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
@ -140,6 +212,30 @@
<PythonVersion>3.7</PythonVersion> <PythonVersion>3.7</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG> <LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.8</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.9</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.10</PythonVersion>
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -176,6 +272,33 @@
<PythonVersion>3.7</PythonVersion> <PythonVersion>3.7</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE> <LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.8</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.9</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.10</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType> <ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
@ -212,7 +335,33 @@
<PythonVersion>3.7</PythonVersion> <PythonVersion>3.7</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE> <LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.8</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.9</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
<PythonVersion>3.10</PythonVersion>
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
@ -228,6 +377,15 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
@ -240,6 +398,15 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
@ -252,6 +419,15 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
@ -264,6 +440,15 @@
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'" Label="PropertySheets"> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros"> <PropertyGroup Label="UserMacros">
<NuGetPackageImportStamp>bb9fbdf7</NuGetPackageImportStamp> <NuGetPackageImportStamp>bb9fbdf7</NuGetPackageImportStamp>
</PropertyGroup> </PropertyGroup>
@ -299,6 +484,30 @@
<IntDir>$(Platform)\$(Configuration)\</IntDir> <IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|Win32'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt> <TargetExt>.pyd</TargetExt>
@ -331,6 +540,30 @@
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir> <IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|x64'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|x64'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|x64'">
<LinkIncremental>true</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<PostBuildEventUseInBuild>true</PostBuildEventUseInBuild>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt> <TargetExt>.pyd</TargetExt>
@ -359,6 +592,27 @@
<IntDir>$(Platform)\$(Configuration)\</IntDir> <IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'">
<LinkIncremental>false</LinkIncremental> <LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt> <TargetExt>.pyd</TargetExt>
@ -387,6 +641,27 @@
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir> <IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'">
<LinkIncremental>false</LinkIncremental>
<TargetExt>.pyd</TargetExt>
<TargetName>$(ProjectName)</TargetName>
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@ -476,6 +751,72 @@
</Command> </Command>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|Win32'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.3.10.10\tools\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.3.10.10\tools\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'">
<ClCompile> <ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader> <PrecompiledHeader>Use</PrecompiledHeader>
@ -564,6 +905,72 @@
</Command> </Command>
</CustomBuildStep> </CustomBuildStep>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|x64'">
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.3.10.10\tools\include</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)packages\python.3.10.10\tools\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
<CustomBuildStep>
<Command>
</Command>
</CustomBuildStep>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
@ -584,7 +991,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|Win32'">
@ -607,7 +1014,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|Win32'">
@ -630,7 +1037,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'">
@ -652,6 +1059,75 @@
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.3.10.10\tools\include</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.3.10.10\tools\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
@ -676,7 +1152,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|x64'">
@ -699,7 +1175,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|x64'">
@ -722,7 +1198,7 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'">
@ -744,6 +1220,75 @@
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link> </Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>Use</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.3.10.10\tools\include</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ModuleDefinitionFile>pykd.def</ModuleDefinitionFile>
<AdditionalLibraryDirectories>$(SolutionDir)packages\python.3.10.10\tools\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
<PostBuildEvent> <PostBuildEvent>
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
</PostBuildEvent> </PostBuildEvent>
@ -901,6 +1446,8 @@
<Import Project="$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets" Condition="'$(PythonVersion)'=='3.5' AND Exists('$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets')" /> <Import Project="$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets" Condition="'$(PythonVersion)'=='3.5' AND Exists('$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets')" />
<Import Project="$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets" Condition="'$(PythonVersion)'=='3.6' AND Exists('$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" /> <Import Project="$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets" Condition="'$(PythonVersion)'=='3.6' AND Exists('$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" />
<Import Project="$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets" Condition="'$(PythonVersion)'=='3.7' AND Exists('$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" /> <Import Project="$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets" Condition="'$(PythonVersion)'=='3.7' AND Exists('$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" />
<Import Project="$(SolutionDir)\packages\Python38.3.8.0\build\python38.targets" Condition="'$(PythonVersion)'=='3.8' AND Exists('$(SolutionDir)\packages\Python38.3.8.0\build\python38.targets')" />
<Import Project="$(SolutionDir)\packages\Python39.3.9.0\build\python39.targets" Condition="'$(PythonVersion)'=='3.9' AND Exists('$(SolutionDir)\packages\Python39.3.9.0\build\python39.targets')" />
</ImportGroup> </ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup> <PropertyGroup>
@ -919,5 +1466,7 @@
<Error Condition="!Exists('$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python35.3.5.1\build\python35.targets'))" /> <Error Condition="!Exists('$(SolutionDir)\packages\Python35.3.5.1.1\build\python35.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python35.3.5.1\build\python35.targets'))" />
<Error Condition="!Exists('$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" /> <Error Condition="!Exists('$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python36.3.6.0\build\python36.targets')" />
<Error Condition="!Exists('$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" /> <Error Condition="!Exists('$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python37.1.0.0.1\build\python37.targets')" />
<Error Condition="!Exists('$(SolutionDir)\packages\Python38.3.8.0\build\python38.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python38.3.8.0\build\python38.targets')" />
<Error Condition="!Exists('$(SolutionDir)\packages\Python39.3.9.0\build\python39.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Python39.3.9.0\build\python39.targets')" />
</Target> </Target>
</Project> </Project>

View File

@ -2,7 +2,7 @@
#define PYKD_VERSION_MAJOR 0 #define PYKD_VERSION_MAJOR 0
#define PYKD_VERSION_MINOR 3 #define PYKD_VERSION_MINOR 3
#define PYKD_VERSION_SUBVERSION 4 #define PYKD_VERSION_SUBVERSION 4
#define PYKD_VERSION_BUILDNO 8 #define PYKD_VERSION_BUILDNO 15
#define __VER_STR2__(x) #x #define __VER_STR2__(x) #x
#define __VER_STR1__(x) __VER_STR2__(x) #define __VER_STR1__(x) __VER_STR2__(x)

View File

@ -266,8 +266,32 @@ inline kdlib::MemoryProtect getVaProtect( kdlib::MEMOFFSET_64 offset )
return kdlib::getVaProtect(offset); return kdlib::getVaProtect(offset);
} }
inline kdlib::MemoryState getVaState(kdlib::MEMOFFSET_64 offset)
{
AutoRestorePyState pystate;
return kdlib::getVaState(offset);
}
inline kdlib::MemoryType getVaType(kdlib::MEMOFFSET_64 offset)
{
AutoRestorePyState pystate;
return kdlib::getVaType(offset);
}
inline python::tuple getVaAttributes(kdlib::MEMOFFSET_64 offset)
{
kdlib::MemoryProtect memProtect;
kdlib::MemoryState memState;
kdlib::MemoryType memType;
{
AutoRestorePyState pystate;
memProtect = kdlib::getVaProtect(offset);
memState = kdlib::getVaState(offset);
memType = kdlib::getVaType(offset);
}
return python::make_tuple(memProtect, memState, memType);
}
} // end namespace pykd } // end namespace pykd

File diff suppressed because it is too large Load Diff

View File

@ -91,7 +91,16 @@ struct ModuleAdapter : public kdlib::Module
catch (kdlib::DbgException&) catch (kdlib::DbgException&)
{ } { }
return python::object(module.getTypeByName(symbolName));
try {
return python::object(module.getTypeByName(symbolName));
}
catch (kdlib::DbgException&)
{ }
std::wstringstream sstr;
sstr << L'\'' << module.getName() << L'\'' << L" module has not a symbol " << L'\'' << symbolName << L'\'';
throw AttributeException(std::string(_bstr_t(sstr.str().c_str())).c_str());
} }
static python::object getItemByKey(kdlib::Module& module, const std::wstring &symbolName) static python::object getItemByKey(kdlib::Module& module, const std::wstring &symbolName)
@ -113,7 +122,7 @@ struct ModuleAdapter : public kdlib::Module
} }
std::wstringstream sstr; std::wstringstream sstr;
sstr << L"module hase symbol " << L'\'' << symbolName << L'\''; sstr << L"module has not a symbol " << L'\'' << symbolName << L'\'';
throw KeyException(std::string(_bstr_t(sstr.str().c_str())).c_str()); throw KeyException(std::string(_bstr_t(sstr.str().c_str())).c_str());
} }

View File

@ -103,7 +103,7 @@ python::list getTypedVarArrayByType( kdlib::MEMOFFSET_64 offset, kdlib::TypeInfo
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar ) python::list TypedVarAdapter::getFields(const kdlib::TypedVarPtr& typedVar)
{ {
typedef boost::tuple<std::wstring,kdlib::MEMOFFSET_32,kdlib::TypedVarPtr> FieldTuple; typedef boost::tuple<std::wstring,kdlib::MEMOFFSET_32,kdlib::TypedVarPtr> FieldTuple;
@ -113,18 +113,18 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar )
AutoRestorePyState pystate; AutoRestorePyState pystate;
for ( size_t i = 0; i < typedVar.getElementCount(); ++i ) for ( size_t i = 0; i < typedVar->getElementCount(); ++i )
{ {
std::wstring name = typedVar.getElementName(i); std::wstring name = typedVar->getElementName(i);
kdlib::MEMOFFSET_32 offset = 0; kdlib::MEMOFFSET_32 offset = 0;
if (typedVar.getType()->isConstMember(i)) if (typedVar->getType()->isConstMember(i))
continue; continue;
if (!typedVar.getType()->isStaticMember(i) ) if (!typedVar->getType()->isStaticMember(i) )
offset = typedVar.getElementOffset(i); offset = typedVar->getElementOffset(i);
kdlib::TypedVarPtr val = typedVar.getElement(i); kdlib::TypedVarPtr val = typedVar->getElement(i);
lst.push_back( FieldTuple( name, offset, val ) ); lst.push_back( FieldTuple( name, offset, val ) );
} }
@ -139,6 +139,44 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar )
return pylst; return pylst;
} }
python::list TypedVarAdapter::getMembers(const kdlib::TypedVarPtr& typedVar)
{
typedef boost::tuple<std::wstring, kdlib::MEMOFFSET_32, kdlib::TypedVarPtr> FieldTuple;
std::list<FieldTuple> lst;
do {
AutoRestorePyState pystate;
auto varType = typedVar->getType();
for (size_t i = 0; i < typedVar->getElementCount(); ++i)
{
if (varType->isConstMember(i) || varType->isInheritedMember(i))
continue;
std::wstring name = typedVar->getElementName(i);
kdlib::MEMOFFSET_32 offset = 0;
if (!varType->isStaticMember(i))
offset = typedVar->getElementOffset(i);
kdlib::TypedVarPtr val = typedVar->getElement(i);
lst.push_back(FieldTuple(name, offset, val));
}
} while (false);
python::list pylst;
for (std::list<FieldTuple>::const_iterator it = lst.begin(); it != lst.end(); ++it)
pylst.append(python::make_tuple(it->get<0>(), it->get<1>(), it->get<2>()));
return pylst;
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
bool TypedVarAdapter::hasField(kdlib::TypedVarPtr& typedVar, const std::wstring &fieldName) bool TypedVarAdapter::hasField(kdlib::TypedVarPtr& typedVar, const std::wstring &fieldName)
@ -216,7 +254,19 @@ kdlib::TypedVarPtr TypedVarAdapter::getFieldAttr(kdlib::TypedVar& typedVar, cons
catch (kdlib::TypeException&) catch (kdlib::TypeException&)
{} {}
return typedVar.getMethod(name);
try
{
return typedVar.getMethod(name);
}
catch (kdlib::TypeException&)
{
}
std::stringstream sstr;
sstr << "typed var has no field " << '\'' << _bstr_t(name.c_str()) << '\'';
throw AttributeException(sstr.str().c_str());
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -187,7 +187,9 @@ struct TypedVarAdapter {
return typedVar.str(); return typedVar.str();
} }
static python::list getFields( kdlib::TypedVar& typedVar ); static python::list getFields(const kdlib::TypedVarPtr& typedVar);
static python::list getMembers(const kdlib::TypedVarPtr& typedVar);
static kdlib::TypeInfoPtr getType( kdlib::TypedVar& typedVar ) static kdlib::TypeInfoPtr getType( kdlib::TypedVar& typedVar )
{ {

View File

@ -75,7 +75,7 @@ python::tuple findSymbolAndDisp( ULONG64 offset )
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
python::list TypeInfoAdapter::getFields( kdlib::TypeInfo &typeInfo ) python::list TypeInfoAdapter::getFields( const kdlib::TypeInfoPtr &typeInfo )
{ {
typedef boost::tuple<std::wstring,kdlib::TypeInfoPtr> FieldTuple; typedef boost::tuple<std::wstring,kdlib::TypeInfoPtr> FieldTuple;
@ -85,10 +85,10 @@ python::list TypeInfoAdapter::getFields( kdlib::TypeInfo &typeInfo )
AutoRestorePyState pystate; AutoRestorePyState pystate;
for ( size_t i = 0; i < typeInfo.getElementCount(); ++i ) for ( size_t i = 0; i < typeInfo->getElementCount(); ++i )
{ {
std::wstring name = typeInfo.getElementName(i); std::wstring name = typeInfo->getElementName(i);
kdlib::TypeInfoPtr val = typeInfo.getElement(i); kdlib::TypeInfoPtr val = typeInfo->getElement(i);
lst.push_back( FieldTuple( name, val ) ); lst.push_back( FieldTuple( name, val ) );
} }
@ -103,6 +103,35 @@ python::list TypeInfoAdapter::getFields( kdlib::TypeInfo &typeInfo )
return pylst; return pylst;
} }
python::list TypeInfoAdapter::getMembers(const kdlib::TypeInfoPtr &typeInfo)
{
typedef boost::tuple<std::wstring, kdlib::TypeInfoPtr> FieldTuple;
std::list<FieldTuple> lst;
do {
AutoRestorePyState pystate;
for (size_t i = 0; i < typeInfo->getElementCount(); ++i)
{
std::wstring name = typeInfo->getElementName(i);
kdlib::TypeInfoPtr val = typeInfo->getElement(i);
if (!typeInfo->isInheritedMember(i))
lst.push_back(FieldTuple(name, val));
}
} while (false);
python::list pylst;
for (std::list<FieldTuple>::const_iterator it = lst.begin(); it != lst.end(); ++it)
pylst.append(python::make_tuple(it->get<0>(), it->get<1>()));
return pylst;
}
bool TypeInfoAdapter::hasFieldOrMethod(kdlib::TypeInfoPtr& typeInfo, const std::wstring& fieldName) bool TypeInfoAdapter::hasFieldOrMethod(kdlib::TypeInfoPtr& typeInfo, const std::wstring& fieldName)
{ {
AutoRestorePyState pystate; AutoRestorePyState pystate;
@ -244,7 +273,19 @@ kdlib::TypeInfoPtr TypeInfoAdapter::getElementAttr(kdlib::TypeInfo &typeInfo, co
catch (kdlib::TypeException&) catch (kdlib::TypeException&)
{} {}
return typeInfo.getMethod(name); try
{
return typeInfo.getMethod(name);
}
catch (kdlib::TypeException&)
{
}
std::stringstream sstr;
sstr << '\'' << _bstr_t(typeInfo.getName().c_str()) << '\''
<< " type has no field " << '\'' << _bstr_t(name.c_str()) << '\'';
throw AttributeException(sstr.str().c_str());
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -69,6 +69,12 @@ inline kdlib::TypeInfoProviderPtr getTypeInfoProviderFromSource(const std::wstri
return kdlib::getTypeInfoProviderFromSource(sourceCode, compileOptions); return kdlib::getTypeInfoProviderFromSource(sourceCode, compileOptions);
} }
inline kdlib::SymbolProviderPtr getSymbolProviderFromSource(const std::wstring& sourceCode, const std::wstring& compileOptions = L"")
{
AutoRestorePyState pystate;
return kdlib::getSymbolProviderFromSource(sourceCode, compileOptions);
}
inline kdlib::TypeInfoProviderPtr getTypeInfoProviderFromPdb(const std::wstring& fileName, kdlib::MEMOFFSET_64 offset = 0UL) inline kdlib::TypeInfoProviderPtr getTypeInfoProviderFromPdb(const std::wstring& fileName, kdlib::MEMOFFSET_64 offset = 0UL)
{ {
AutoRestorePyState pystate; AutoRestorePyState pystate;
@ -143,6 +149,30 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
return typeInfo.getElementVa( name ); return typeInfo.getElementVa( name );
} }
static bool isStaticField(const kdlib::TypeInfoPtr &typeInfo, const std::wstring &name)
{
AutoRestorePyState pystate;
return typeInfo->isStaticMember(name);
}
static bool isStaticFieldByIndex(const kdlib::TypeInfoPtr &typeInfo, size_t index)
{
AutoRestorePyState pystate;
return typeInfo->isStaticMember(index);
}
static bool isConstField(const kdlib::TypeInfoPtr &typeInfo, const std::wstring &name)
{
AutoRestorePyState pystate;
return typeInfo->isConstMember(name);
}
static bool isConstFieldByIndex(const kdlib::TypeInfoPtr &typeInfo, size_t index)
{
AutoRestorePyState pystate;
return typeInfo->isConstMember(index);
}
static kdlib::TypeInfoPtr getElementByName( kdlib::TypeInfo &typeInfo, const std::wstring &name ) static kdlib::TypeInfoPtr getElementByName( kdlib::TypeInfo &typeInfo, const std::wstring &name )
{ {
@ -332,7 +362,9 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
return typeInfo.str(); return typeInfo.str();
} }
static python::list getFields( kdlib::TypeInfo &typeInfo ); static python::list getFields( const kdlib::TypeInfoPtr &typeInfo );
static python::list getMembers(const kdlib::TypeInfoPtr &typeInfo);
static python::list getMethods(kdlib::TypeInfo &typeInfo); static python::list getMethods(kdlib::TypeInfo &typeInfo);
@ -346,6 +378,10 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
return false; return false;
} }
static bool isNotZero(kdlib::TypeInfo &typeInfo) {
return true;
}
static bool hasFieldOrMethod(kdlib::TypeInfoPtr& typedVar, const std::wstring& name); static bool hasFieldOrMethod(kdlib::TypeInfoPtr& typedVar, const std::wstring& name);
}; };
@ -406,6 +442,56 @@ struct TypeInfoProviderAdapter : public kdlib::TypeInfoProvider
}; };
struct SymbolEnumeratorAdapter
{
SymbolEnumeratorAdapter(const kdlib::SymbolEnumeratorPtr& symEnum)
: m_symEnum(symEnum)
{}
static python::object getIter(const python::object& obj)
{
return obj;
}
python::tuple next()
{
std::wstring name;
kdlib::MEMOFFSET_64 offset;
kdlib::TypeInfoPtr typeInfo;
{
AutoRestorePyState pystate;
if (!m_symEnum->Next())
throw StopIteration("No more data.");
name = m_symEnum->getName();
offset = m_symEnum->getOffset();
typeInfo = m_symEnum->getType();
}
return python::make_tuple(name, offset, typeInfo);
}
private:
kdlib::SymbolEnumeratorPtr m_symEnum;
};
struct SymbolProviderAdapter
{
static SymbolEnumeratorAdapter* getIter(const kdlib::SymbolProviderPtr &symProvider)
{
return new SymbolEnumeratorAdapter(symProvider->getSymbolEnumerator());
};
static SymbolEnumeratorAdapter* getIterWithMask(const kdlib::SymbolProviderPtr &symProvider, const std::wstring& mask)
{
return new SymbolEnumeratorAdapter(symProvider->getSymbolEnumerator(mask));
}
};
struct BaseTypesEnum { struct BaseTypesEnum {
static kdlib::TypeInfoPtr getUInt1B() { return pykd::getTypeInfoByName(L"UInt1B"); } static kdlib::TypeInfoPtr getUInt1B() { return pykd::getTypeInfoByName(L"UInt1B"); }
static kdlib::TypeInfoPtr getUInt2B() { return pykd::getTypeInfoByName(L"UInt2B"); } static kdlib::TypeInfoPtr getUInt2B() { return pykd::getTypeInfoByName(L"UInt2B"); }

View File

@ -12,6 +12,8 @@ namespace python = boost::python;
#include "dbgexcept.h" #include "dbgexcept.h"
#include "pydbgio.h" #include "pydbgio.h"
#include <python.h>
using namespace kdlib::windbg; using namespace kdlib::windbg;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -228,16 +230,16 @@ KDLIB_EXT_COMMAND_METHOD_IMPL(PykdExt, py)
{ {
PyInterpreterState *interpreter = localState->interp; PyInterpreterState *interpreter = localState->interp;
while( interpreter->tstate_head != NULL ) //while( interpreter->tstate_head != NULL )
{ //{
PyThreadState *threadState = (PyThreadState*)(interpreter->tstate_head); // PyThreadState *threadState = (PyThreadState*)(interpreter->tstate_head);
PyThreadState_Clear(threadState); // PyThreadState_Clear(threadState);
PyThreadState_Swap( NULL ); // PyThreadState_Swap( NULL );
PyThreadState_Delete(threadState); // PyThreadState_Delete(threadState);
} //}
PyInterpreterState_Clear(interpreter); PyInterpreterState_Clear(interpreter);

View File

@ -18,4 +18,14 @@ py -3.7 setup.py bdist_zip --plat-name=win-amd64
py -3.7 setup.py bdist_wheel --plat-name=win32 --python-tag=cp37 py -3.7 setup.py bdist_wheel --plat-name=win32 --python-tag=cp37
py -3.7 setup.py bdist_wheel --plat-name=win-amd64 --python-tag=cp37 py -3.7 setup.py bdist_wheel --plat-name=win-amd64 --python-tag=cp37
py -3.8 setup.py bdist_zip --plat-name=win32
py -3.8 setup.py bdist_zip --plat-name=win-amd64
py -3.8 setup.py bdist_wheel --plat-name=win32 --python-tag=cp38
py -3.8 setup.py bdist_wheel --plat-name=win-amd64 --python-tag=cp38
py -3.9 setup.py bdist_zip --plat-name=win32
py -3.9 setup.py bdist_zip --plat-name=win-amd64
py -3.9 setup.py bdist_wheel --plat-name=win32 --python-tag=cp39
py -3.9 setup.py bdist_wheel --plat-name=win-amd64 --python-tag=cp39
py setup.py bdist_pdb py setup.py bdist_pdb

View File

@ -5,10 +5,11 @@ import os
import shutil import shutil
import zipfile import zipfile
import sys import sys
import itertools
_name = "pykd" _name = "pykd"
_desc = "python windbg extension" _desc = "python windbg extension"
_version = '0.3.4.2' _version = '0.3.4.15'
def getReleaseSrc(): def getReleaseSrc():
return 'Release_%d.%d' % sys.version_info[0:2] return 'Release_%d.%d' % sys.version_info[0:2]
@ -60,7 +61,7 @@ if "bdist_wheel" in sys.argv:
elif "bdist_zip" in sys.argv: elif "bdist_zip" in sys.argv:
#make package catalog #make package catalog
if "--plat-name=win32" in sys.argv: if "--plat-name=win32" in sys.argv:
plat_name="win32" plat_name="win32"
@ -105,6 +106,26 @@ elif "bdist_zip" in sys.argv:
archive.write( os.path.join(package_dir, srcFile), compress_type = zipfile.ZIP_DEFLATED) archive.write( os.path.join(package_dir, srcFile), compress_type = zipfile.ZIP_DEFLATED)
print("OK") print("OK")
elif "bdist_pdb" in sys.argv:
#make pdb archive
pyVersion = ('2.7', '3.5', '3.6', '3.7', '3.8', '3.9', '3.10', '3.11')
platform = ('Win32', 'x64')
pdbFiles = [ os.path.join( platform, 'Release_' + version, 'pykd.pdb') for version, platform in itertools.product( pyVersion, platform ) ]
zip_name = "pykd-%s-symbols.zip" % _version
with zipfile.ZipFile(os.path.join(os.path.curdir, 'dist', zip_name), mode='w' ) as archive:
for pdbFile in pdbFiles:
print( "zipped %s" % (pdbFile) )
archive.write( os.path.join(os.path.curdir, '..', 'out', pdbFile), pdbFile, compress_type = zipfile.ZIP_DEFLATED)
#pdbFileList = [ os.path.join( os.path.curdir, '..', 'out', fileName) for fileName in (
pass
@ -122,127 +143,3 @@ elif "bdist_zip" in sys.argv:
#from setuptools import setup
#from wheel.bdist_wheel import bdist_wheel
#import pkg_resources
#import argparse
#import os
#import shutil
#import zipfile
#import sys
#_name = "pykd"
#_desc = "python windbg extension"
#_version = '0.3.1.2'
#def getReleaseSrc():
# return 'Release_%d.%d' % sys.version_info[0:2]
#def makeWheel(args):
# # remove build catalog
# build_dir = os.path.join(os.path.curdir, 'build' )
# if os.path.exists(build_dir):
# shutil.rmtree(build_dir)
# # make package catalog
# package_dir = os.path.join(os.path.curdir, _name )
# if os.path.exists(package_dir):
# shutil.rmtree(package_dir)
# os.mkdir(package_dir)
# shutil.copy("__init__.py", package_dir)
# bin_dir = os.path.join( os.path.curdir, '..', 'bin')
# pykd_dir = os.path.join( os.path.curdir, '..', 'out')
# if args.plat_name == 'win32':
# bin_dir = os.path.join( bin_dir, 'x86')
# pykd_dir = os.path.join(pykd_dir, 'Win32', getReleaseSrc())
# elif args.plat_name == 'win-amd64':
# bin_dir = os.path.join( bin_dir, 'x64')
# pykd_dir = os.path.join(pykd_dir, 'X64', getReleaseSrc())
# else:
# assert(0)
# assert(os.path.isdir(bin_dir))
# for binFile in [ f for f in os.listdir(bin_dir) if not os.path.isdir(f) ]:
# shutil.copy( os.path.join(bin_dir, binFile), os.path.join(package_dir, binFile) )
# shutil.copy( os.path.join(pykd_dir, 'pykd.pyd'), os.path.join(package_dir, 'pykd.pyd') )
# setup(
# name = _name,
# version = _version,
# description = _desc,
# cmdclass = { 'bdist_wheel' : bdist_wheel },
# packages = ['pykd'],
# package_dir = {'pykd': package_dir},
# package_data = { 'pykd' :["*.pyd", "*.dll"]},
# include_package_data=True,
# zip_safe = False,
# universal = True,
# #python_tag = args.python_tag
# )
#def makeZip(args):
# #make package catalog
# package_dir = os.path.join(os.path.curdir, _name )
# if os.path.exists(package_dir):
# shutil.rmtree(package_dir)
# os.mkdir(package_dir)
# bin_dir = os.path.join( os.path.curdir, '..', 'bin')
# pykd_dir = os.path.join( os.path.curdir, '..', 'out')
# if args.plat_name == 'win32':
# bin_dir = os.path.join( bin_dir, 'x86')
# pykd_dir = os.path.join(pykd_dir, 'Win32', getReleaseSrc())
# elif args.plat_name == 'win-amd64':
# bin_dir = os.path.join( bin_dir, 'x64')
# pykd_dir = os.path.join(pykd_dir, 'X64', getReleaseSrc())
# else:
# assert(0)
# pyver="%d%d" % sys.version_info[0:2]
# zip_str = "pykd-%s-py%s-%s" % ( _version, pyver, args.plat_name )
# zip_name = zip_str + ".zip"
# assert(os.path.isdir(bin_dir))
# for binFile in [ f for f in os.listdir(bin_dir) if not os.path.isdir(f) ]:
# shutil.copy( os.path.join(bin_dir, binFile), os.path.join(package_dir, binFile) )
# shutil.copy( os.path.join(pykd_dir, 'pykd.pyd'), os.path.join(package_dir, 'pykd.pyd') )
# dist_dir = os.path.join(os.path.curdir, 'dist')
# if not os.path.exists(dist_dir):
# os.mkdir(dist_dir)
# with zipfile.ZipFile(os.path.join(os.path.curdir, 'dist', zip_name), mode='w' ) as archive:
# for srcFile in os.listdir(package_dir):
# print( "zipped %s" % (srcFile) )
# archive.write( os.path.join(package_dir, srcFile), compress_type = zipfile.ZIP_DEFLATED)
# print("OK")
#parser = argparse.ArgumentParser()
#subparsers = parser.add_subparsers()
#wheelParser = subparsers.add_parser('bdist_wheel')
#wheelParser.add_argument('--plat-name', choices = ['win32', 'win-amd64'], default=pkg_resources.get_build_platform() )
#wheelParser.add_argument('--python-tag', choices=['2.7', '3.5'])
#wheelParser.set_defaults(func=makeWheel)
#zipParser = subparsers.add_parser('bdist_zip')
#zipParser.add_argument('--plat-name', choices = ['win32', 'win-amd64'], default=pkg_resources.get_build_platform() )
#zipParser.set_defaults(func=makeZip)
#args = parser.parse_args()
#args.func(args)

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@ import sys
def usage(): def usage():
print "python pytowiki.py module_name output_file" print("python pytowiki.py module_name output_file")
class CodeplexFormatter: class CodeplexFormatter:
@ -99,7 +99,7 @@ def buildDoc( ioStream, formatter, apiInfo ):
for func in apiInfo.funcs: for func in apiInfo.funcs:
ioStream.write( formatter.bulletItem( formatter.link( func.__name__, func.__name__ ) ) ) ioStream.write( formatter.bulletItem( formatter.link( func.__name__, func.__name__ ) ) )
ioStream.write( formatter.endl() ) ioStream.write( formatter.endl() )
ioStream.write( formatter.header2( "Classes" ) ) ioStream.write( formatter.header2( "Classes" ) )
@ -134,7 +134,7 @@ def buildDoc( ioStream, formatter, apiInfo ):
ioStream.write( formatter.bulletItem( formatter.link( p[0], cls.__name__ + "." + p[0]) ) ) ioStream.write( formatter.bulletItem( formatter.link( p[0], cls.__name__ + "." + p[0]) ) )
ioStream.write( formatter.endl() ) ioStream.write( formatter.endl() )
methods = filter( lambda m: m.__doc__ != None, cls.methods ) methods = list(filter( lambda m: m.__doc__ != None, cls.methods ) )
if methods: if methods:
ioStream.write( formatter.header4( "Methods:") ) ioStream.write( formatter.header4( "Methods:") )
@ -174,7 +174,7 @@ def main():
module = __import__( moduleName ) module = __import__( moduleName )
with file( fileName, "w" ) as wikiIo: with open( fileName, "w" ) as wikiIo:
apiInfo = ModuleInfo( module ) apiInfo = ModuleInfo( module )
@ -185,7 +185,7 @@ def main():
except ImportWarning: except ImportWarning:
print "failed to import module " + moduleName print("failed to import module ", moduleName)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -182,6 +182,12 @@ class MemoryTest( unittest.TestCase ):
self.assertTrue( pykd.isValid( target.module.begin() ) ) self.assertTrue( pykd.isValid( target.module.begin() ) )
self.assertFalse( pykd.isValid( 0 ) ) self.assertFalse( pykd.isValid( 0 ) )
self.assertFalse( pykd.isValid( 0xDEADBEAF ) ) self.assertFalse( pykd.isValid( 0xDEADBEAF ) )
def testVaAttrib(self):
self.assertEqual( \
(pykd.memoryProtect.PageWriteCopy, pykd.memoryState.Commit, pykd.memoryType.Image), \
pykd.getVaAttributes(target.module.begin()) \
)
def testPtrList( self ): def testPtrList( self ):
lst = pykd.loadPtrList( target.module.g_listHead ) lst = pykd.loadPtrList( target.module.g_listHead )

View File

@ -66,6 +66,9 @@ def getTestSuite( singleName = "" ):
unittest.TestLoader().loadTestsFromTestCase( breakpoint.BreakpointTest ), unittest.TestLoader().loadTestsFromTestCase( breakpoint.BreakpointTest ),
unittest.TestLoader().loadTestsFromTestCase( stacktest.StackTest ), unittest.TestLoader().loadTestsFromTestCase( stacktest.StackTest ),
unittest.TestLoader().loadTestsFromTestCase( stacktest.InlineStackTest ),
unittest.TestLoader().loadTestsFromTestCase( stacktest.DiaRegToRegRelativeI386Test ),
unittest.TestLoader().loadTestsFromTestCase( stacktest.DiaRegToRegRelativeAmd64Test ),
unittest.TestLoader().loadTestsFromTestCase( mspdbtest.MsPdbTest ), unittest.TestLoader().loadTestsFromTestCase( mspdbtest.MsPdbTest ),
unittest.TestLoader().loadTestsFromTestCase( targetprocess.ProcessTest ), unittest.TestLoader().loadTestsFromTestCase( targetprocess.ProcessTest ),
unittest.TestLoader().loadTestsFromTestCase( ehloadtest.EhLoadTest ), unittest.TestLoader().loadTestsFromTestCase( ehloadtest.EhLoadTest ),

View File

@ -8,18 +8,18 @@
<StartupFile>pykdtest.py</StartupFile> <StartupFile>pykdtest.py</StartupFile>
<SearchPath> <SearchPath>
</SearchPath> </SearchPath>
<WorkingDirectory>..\..\out\x64\Debug_2.7</WorkingDirectory> <WorkingDirectory>C:\Users\User\Documents\projects\pykd2017\out\x64\Debug_3.7</WorkingDirectory>
<OutputPath>.</OutputPath> <OutputPath>.</OutputPath>
<Name>pykdtest</Name> <Name>pykdtest</Name>
<RootNamespace>pykdtest</RootNamespace> <RootNamespace>pykdtest</RootNamespace>
<LaunchProvider>Standard Python launcher</LaunchProvider> <LaunchProvider>Standard Python launcher</LaunchProvider>
<CommandLineArguments>C:\proj\pykd-dev\out\x64\Debug\targetapp.exe</CommandLineArguments> <CommandLineArguments>C:\Users\User\Documents\projects\pykd2017\out\x64\Debug_2.7\targetapp.exe</CommandLineArguments>
<InterpreterPath /> <InterpreterPath />
<InterpreterArguments> <InterpreterArguments>
</InterpreterArguments> </InterpreterArguments>
<EnableNativeCodeDebugging>True</EnableNativeCodeDebugging> <EnableNativeCodeDebugging>True</EnableNativeCodeDebugging>
<IsWindowsApplication>False</IsWindowsApplication> <IsWindowsApplication>False</IsWindowsApplication>
<InterpreterId>Global|PythonCore|2.7</InterpreterId> <InterpreterId>Global|PythonCore|3.7</InterpreterId>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -63,6 +63,8 @@
<InterpreterReference Include="Global|PythonCore|2.7-32" /> <InterpreterReference Include="Global|PythonCore|2.7-32" />
<InterpreterReference Include="Global|PythonCore|2.7" /> <InterpreterReference Include="Global|PythonCore|2.7" />
<InterpreterReference Include="Global|PythonCore|3.6" /> <InterpreterReference Include="Global|PythonCore|3.6" />
<InterpreterReference Include="Global|PythonCore|3.7" />
<InterpreterReference Include="Global|PythonCore|3.7-32" />
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets" />

View File

@ -103,4 +103,36 @@ class InlineStackTest(unittest.TestCase):
self.assertEqual( expectedStack, realStack) self.assertEqual( expectedStack, realStack)
class DiaRegToRegRelativeI386Test(unittest.TestCase):
def setUp(self):
dumpDir = os.path.join( os.path.dirname(sys.argv[0]), r"..\..\kdlibcpp\kdlib\tests\dumps\targetapp_test_cv_allreg_i386")
dump_file = os.path.join( dumpDir, "targetapp_test_cv_allreg_i386.cab" )
self.symbolPath = pykd.getSymbolPath()
symbolPath = self.symbolPath + ";" + dumpDir
pykd.setSymbolPath(symbolPath)
self.dump_id = pykd.loadDump( dump_file )
def tearDown(self):
pykd.closeDump( self.dump_id )
pykd.setSymbolPath(self.symbolPath)
def testParams(self):
params = pykd.getFrame().getParams()
self.assertNotEqual(0, len(params))
class DiaRegToRegRelativeAmd64Test(unittest.TestCase):
def setUp(self):
dumpDir = os.path.join( os.path.dirname(sys.argv[0]), r"..\..\kdlibcpp\kdlib\tests\dumps\targetapp_test_cv_allreg_amd64")
dump_file = os.path.join( dumpDir, "targetapp_test_cv_allreg_amd64.cab" )
self.symbolPath = pykd.getSymbolPath()
symbolPath = self.symbolPath + ";" + dumpDir
pykd.setSymbolPath(symbolPath)
self.dump_id = pykd.loadDump( dump_file )
def tearDown(self):
pykd.closeDump( self.dump_id )
pykd.setSymbolPath(self.symbolPath)
def testLocals(self):
locals = pykd.getFrame().getLocals()
self.assertNotEqual(0, len(locals))

View File

@ -21,6 +21,14 @@ class TypedVarTest( unittest.TestCase ):
tv = pykd.typedVar( "g_structTest" ) tv = pykd.typedVar( "g_structTest" )
tv = pykd.typedVar( target.moduleName + "!g_structTest" ) tv = pykd.typedVar( target.moduleName + "!g_structTest" )
def testCompareWithNone(self):
tv = target.module.typedVar( "ucharVar" )
self.assertFalse(tv == None)
self.assertTrue(tv != None)
self.assertFalse(not tv)
self.assertTrue(tv)
def testBaseTypes(self): def testBaseTypes(self):
self.assertEqual( 10, target.module.typedVar( "ucharVar" ) ) self.assertEqual( 10, target.module.typedVar( "ucharVar" ) )
self.assertEqual( 1020, target.module.typedVar( "ushortVar" ) ) self.assertEqual( 1020, target.module.typedVar( "ushortVar" ) )
@ -87,7 +95,7 @@ class TypedVarTest( unittest.TestCase ):
self.assertEqual( True, tv1.m_field2 ) self.assertEqual( True, tv1.m_field2 )
self.assertEqual( 1, tv1.m_field3 ) self.assertEqual( 1, tv1.m_field3 )
self.assertEqual( 1, tv1["m_field3"] ) self.assertEqual( 1, tv1["m_field3"] )
self.assertRaises( pykd.SymbolException, lambda t: t.not_exists, tv1) # non-exsisting field self.assertRaises( AttributeError, lambda t: t.not_exists, tv1) # non-exsisting field
self.assertRaises( KeyError, lambda t: t["not_exists"], tv1) # non-exsisting field self.assertRaises( KeyError, lambda t: t["not_exists"], tv1) # non-exsisting field
def testPtrField(self): def testPtrField(self):
@ -295,8 +303,8 @@ class TypedVarTest( unittest.TestCase ):
def testUdtSubscribe(self): def testUdtSubscribe(self):
tv = pykd.typedVar( "g_virtChild" ) tv = pykd.typedVar( "g_virtChild" )
self.assertEqual( 6, len(tv) ) self.assertEqual( 6, len(tv) )
fieldName = tv.fieldName(5) fieldName = tv.fieldName(3)
fieldVal = tv.field(5) fieldVal = tv.field(3)
self.assertEqual( fieldName, "m_baseField" ) self.assertEqual( fieldName, "m_baseField" )
self.assertEqual( fieldVal, tv.m_baseField ) self.assertEqual( fieldVal, tv.m_baseField )
@ -439,7 +447,7 @@ class TypedVarTest( unittest.TestCase ):
var = target.module.typedVar("structTest", [0x55] * 20 ) var = target.module.typedVar("structTest", [0x55] * 20 )
setattr(var, "m_field1", 11) setattr(var, "m_field1", 11)
self.assertEqual(11, getattr(var, "m_field1")) self.assertEqual(11, getattr(var, "m_field1"))
self.assertRaises(pykd.SymbolException, lambda x: getattr(x, "noexists"), var) self.assertRaises(AttributeError, lambda x: getattr(x, "noexists"), var)
def testEvalPyScope(self): def testEvalPyScope(self):
var = target.module.typedVar("structTest", [0x55] * 20 ) var = target.module.typedVar("structTest", [0x55] * 20 )

View File

@ -42,7 +42,7 @@ class TypeInfoTest( unittest.TestCase ):
self.assertTrue( "UInt4B", ti1.m_field0.name() ) self.assertTrue( "UInt4B", ti1.m_field0.name() )
self.assertTrue( "m_field0" in ti1 ) self.assertTrue( "m_field0" in ti1 )
self.assertFalse( "not_exist" in ti1) # non-exsisting field self.assertFalse( "not_exist" in ti1) # non-exsisting field
self.assertRaises( pykd.SymbolException, lambda t: t.not_exists, ti1) # non-exsisting field self.assertRaises( AttributeError, lambda t: t.not_exists, ti1) # non-exsisting field
def testBaseTypes( self ): def testBaseTypes( self ):
@ -242,16 +242,12 @@ class TypeInfoTest( unittest.TestCase ):
ti = pykd.typeInfo("UInt8B").arrayOf(10) ti = pykd.typeInfo("UInt8B").arrayOf(10)
self.assertTrue( "UInt8B[10]", ti.name() ) self.assertTrue( "UInt8B[10]", ti.name() )
def testCompareWihNone(self): def testCompareWithNone(self):
ti = pykd.typeInfo("UInt8B") ti = pykd.typeInfo("UInt8B")
if ti == None: self.assertFalse(ti == None)
pass self.assertTrue(ti != None)
if ti != None: self.assertFalse(not ti)
pass self.assertTrue(ti)
if not ti:
pass
if ti:
pass
def testFunction(self): def testFunction(self):
functype = target.module.typedVar( "CdeclFuncPtr" ).type().deref() functype = target.module.typedVar( "CdeclFuncPtr" ).type().deref()
@ -354,7 +350,7 @@ class TypeInfoTest( unittest.TestCase ):
typeProvider = pykd.getTypeInfoProviderFromPdb(pdb) typeProvider = pykd.getTypeInfoProviderFromPdb(pdb)
self.assertEqual("structTest", typeProvider.getTypeByName("structTest").name()) self.assertEqual("structTest", typeProvider.getTypeByName("structTest").name())
self.assertEqual("structTest", typeProvider.structTest.name()) self.assertEqual("structTest", typeProvider.structTest.name())
self.assertEqual(16, len(list(typeProvider.typeIterator("*struct*")))) self.assertEqual(15, len(list(typeProvider.typeIterator("*struct*"))))
def testScopeName(self): def testScopeName(self):
self.assertEqual( target.module.name(), pykd.typeInfo( "structTest" ).scopeName() ) self.assertEqual( target.module.name(), pykd.typeInfo( "structTest" ).scopeName() )
@ -371,3 +367,26 @@ class TypeInfoTest( unittest.TestCase ):
self.assertTrue(ti.isTemplate) self.assertTrue(ti.isTemplate)
self.assertEqual(['int', 'TestClassTemplate<int>'], ti.getTemplateArgs() ) self.assertEqual(['int', 'TestClassTemplate<int>'], ti.getTemplateArgs() )
def testMembers(self):
self.assertEqual(
['__VFN_table', '__VFN_table', 'm_staticConst', 'm_staticField', 'm_childField',
'm_childField2', 'm_childField3', 'm_enumField'],
[ member[0] for member in pykd.typeInfo( "classChild" ).members() ])
def testIsStaticField(self):
ti = pykd.typeInfo("classChild")
self.assertTrue(ti.isStaticField("m_staticField"))
self.assertFalse(ti.isStaticField("m_baseField"))
def testIsConstField(self):
ti = pykd.typeInfo("classChild")
self.assertTrue(ti.isStaticField("m_staticConst"))
self.assertFalse(ti.isConstField("m_staticConst"))
#def testClangCompile(self):
# src_code = '#include <windows.h>\r\n'
# include_path = '"C:/Program Files (x86)/Windows Kits/8.1/Include/um";"C:/Program Files (x86)/Windows Kits/8.1/Include/shared'
# compile_opts = '-I%s -w' % include_path
# symbolEnum = pykd.getSymbolProviderFromSource(src_code, compile_opts)
# for symName, _, symType in symbolEnum :
# print( symName, symType.name() )