mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 03:23:23 +08:00
Compare commits
53 Commits
0.3.4.7
...
0.3.4.15_1
Author | SHA1 | Date | |
---|---|---|---|
![]() |
98980c4414 | ||
![]() |
bd66633136 | ||
![]() |
eeabea3f8d | ||
![]() |
29a0fc0c09 | ||
![]() |
22cf84b27e | ||
![]() |
8bd990fcf6 | ||
![]() |
6e966b96be | ||
![]() |
8167656e04 | ||
![]() |
cf27e9072d | ||
![]() |
fe85b1e6a5 | ||
![]() |
46382d24fa | ||
![]() |
7bc86e0c53 | ||
![]() |
5bfa947185 | ||
![]() |
c36dafa380 | ||
![]() |
d8f99d73e8 | ||
![]() |
33787db547 | ||
![]() |
cccc1103b1 | ||
![]() |
dfb935f3f8 | ||
![]() |
fce592816d | ||
![]() |
f9a0361d85 | ||
![]() |
af9127d5d5 | ||
![]() |
25fbe8a6f6 | ||
![]() |
fcf6d9927b | ||
![]() |
eb6b11a55d | ||
![]() |
b2d7e2d7dc | ||
![]() |
52463eb340 | ||
![]() |
0f0c5667df | ||
![]() |
be01beb07f | ||
![]() |
ad341bee9f | ||
![]() |
a447202c6a | ||
![]() |
c8d153a1d4 | ||
![]() |
0a1fc9bee3 | ||
![]() |
b17ac9dd05 | ||
![]() |
897b7fc82d | ||
![]() |
1af548beda | ||
![]() |
d68a9d82de | ||
![]() |
c0943dd033 | ||
![]() |
e22b4cd38a | ||
![]() |
a99b758dd9 | ||
![]() |
15a99d60de | ||
![]() |
490730dabc | ||
![]() |
85028a9a1b | ||
![]() |
7d9b0faffa | ||
![]() |
0450a3abdf | ||
![]() |
a0f0905cf9 | ||
![]() |
4de8114c3e | ||
![]() |
c28dac3979 | ||
![]() |
b5f56b61c9 | ||
![]() |
a3da177dc1 | ||
![]() |
badd9762a3 | ||
![]() |
10344dbd09 | ||
![]() |
852908bb40 | ||
![]() |
daaa04a5a4 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*.pyc
|
||||
.vs
|
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -1,3 +1,3 @@
|
||||
[submodule "kdlibcpp"]
|
||||
path = kdlibcpp
|
||||
url = https://githomelab.ru/kdlibcpp/kdlibcpp.git
|
||||
url = https://github.com/ivellioscolin/kdlibcpp.git
|
||||
|
45
README.md
45
README.md
@ -1,4 +1,4 @@
|
||||
# Pykd - python extension for WinDBG
|
||||
# Pykd - not only python extension for WinDBG
|
||||
|
||||
## 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!
|
||||
@ -6,17 +6,36 @@ This project can help to automate debugging and crash dump analysis using Python
|
||||
## 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?
|
||||
|
||||
## Pykd bootstrapper
|
||||
Use it to run pykd within windbg. [link](https://githomelab.ru/pykd/pykd-ext)
|
||||
## Getting started
|
||||
* 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:
|
||||
[All Release](/../wikis/All Releases)
|
||||
[PyPi](https://pypi.org/project/pykd)
|
||||
## Windbg extension (bootstarpper)
|
||||
Use it to run pykd within windbg.
|
||||
[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
|
||||
[Wiki Home](/../wikis/Home)
|
||||
[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 ?
|
||||
* install VS 2017
|
||||
@ -34,4 +53,14 @@ https://git-scm.com/
|
||||
git clone --recurse-submodules https://githomelab.ru/pykd/pykd.git local_dir
|
||||
```
|
||||
* 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
|
2
kdlibcpp
2
kdlibcpp
@ -1 +1 @@
|
||||
Subproject commit 32da972c4d33950a06b30f9ef8d148313c250411
|
||||
Subproject commit e54598d2f904acab23d340c93ce77c551a396ecb
|
150
pykd.sln
150
pykd.sln
@ -42,75 +42,126 @@ Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug_2.7|Win32 = Debug_2.7|Win32
|
||||
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|x64 = Debug_3.5|x64
|
||||
Debug_3.6|Win32 = Debug_3.6|Win32
|
||||
Debug_3.6|x64 = Debug_3.6|x64
|
||||
Debug_3.7|Win32 = Debug_3.7|Win32
|
||||
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|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|x64 = Release_3.5|x64
|
||||
Release_3.6|Win32 = Release_3.6|Win32
|
||||
Release_3.6|x64 = Release_3.6|x64
|
||||
Release_3.7|Win32 = Release_3.7|Win32
|
||||
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
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|Win32.ActiveCfg = Debug|Any CPU
|
||||
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|Win32.Build.0 = Debug|Any CPU
|
||||
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_2.7|x64.ActiveCfg = Debug|Any CPU
|
||||
{3F0BE77E-19B0-4192-B432-44A25805BCB8}.Debug_3.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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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.Build.0 = Debug|Win32
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.ActiveCfg = Debug|x64
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Debug_2.7|x64.Build.0 = Debug|x64
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.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.Build.0 = Debug|Win32
|
||||
{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|x64.ActiveCfg = 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.Build.0 = Release_Static|Win32
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.ActiveCfg = Release_Static|x64
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.Release_2.7|x64.Build.0 = Release_Static|x64
|
||||
{3E9C538F-F060-4E86-AB7D-D44439615B63}.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.Build.0 = Release_Static|Win32
|
||||
{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|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.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.Build.0 = Debug_2.7|Win32
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|x64.ActiveCfg = Debug_2.7|x64
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_2.7|x64.Build.0 = Debug_2.7|x64
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Debug_3.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.Build.0 = Debug_3.5|Win32
|
||||
{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|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.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.Build.0 = Release_2.7|Win32
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|x64.ActiveCfg = Release_2.7|x64
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_2.7|x64.Build.0 = Release_2.7|x64
|
||||
{C4C45791-0201-4406-BC5C-A384B01E3BF5}.Release_3.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.Build.0 = Release_3.5|Win32
|
||||
{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|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.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.Build.0 = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.ActiveCfg = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_2.7|x64.Build.0 = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.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.Build.0 = Debug|Win32
|
||||
{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|x64.ActiveCfg = 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}.Release_2.7|Win32.Build.0 = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.ActiveCfg = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.Build.0 = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.ActiveCfg = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|Win32.Build.0 = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.ActiveCfg = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.5|x64.Build.0 = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.ActiveCfg = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|Win32.Build.0 = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.ActiveCfg = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.6|x64.Build.0 = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.ActiveCfg = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|Win32.Build.0 = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.ActiveCfg = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.7|x64.Build.0 = Release|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|Win32.ActiveCfg = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|Win32.Build.0 = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|x64.ActiveCfg = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.8|x64.Build.0 = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|Win32.ActiveCfg = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|Win32.Build.0 = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|x64.ActiveCfg = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Debug_3.9|x64.Build.0 = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.ActiveCfg = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|Win32.Build.0 = Debug|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.ActiveCfg = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_2.7|x64.Build.0 = Debug|x64
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|Win32.ActiveCfg = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|Win32.Build.0 = Release|Win32
|
||||
{0E4CC688-F2F5-499F-9C07-0F2CAEE0D3EF}.Release_3.10|x64.ActiveCfg = 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
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -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.
|
||||
char *f = const_cast<char *>(filename);
|
||||
// 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");
|
||||
#elif PY_VERSION_HEX >= 0x03000000
|
||||
PyObject *fo = Py_BuildValue("s", f);
|
||||
|
@ -11,6 +11,10 @@
|
||||
<package id="Python35" version="3.5.1.1" targetFramework="Native" />
|
||||
<package id="Python36" version="3.6.0" 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="llvm-cmake" version="6.0.0.1" targetFramework="Native" />
|
||||
</packages>
|
||||
|
@ -163,6 +163,19 @@ python::list getLocalProcesses()
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
std::wstring getHostProcessPath()
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
|
||||
std::vector<WCHAR> fileNameBuffer(0x1000);
|
||||
|
||||
DWORD fileNameSize = GetModuleFileNameW(NULL, &fileNameBuffer.front(), fileNameBuffer.size() );
|
||||
|
||||
return std::wstring(&fileNameBuffer.front(), fileNameSize);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
python::tuple getBugCheckData()
|
||||
{
|
||||
kdlib::SystemCrashInfo crashInfo = {};
|
||||
|
@ -104,13 +104,13 @@ bool isKernelDebugging()
|
||||
|
||||
|
||||
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;
|
||||
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
debugResult = kdlib::debugCommand(command, suppressOutput);
|
||||
debugResult = kdlib::debugCommand(command, suppressOutput, captureFlags);
|
||||
}
|
||||
|
||||
if (debugResult.size() > 0 )
|
||||
@ -147,6 +147,20 @@ void setOutputMask(const kdlib::OutputFlagsSet& 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
|
||||
@ -293,6 +307,7 @@ inline void setImplicitProcess(kdlib::MEMOFFSET_64 offset)
|
||||
AutoRestorePyState pystate;
|
||||
kdlib::setImplicitProcess(offset);
|
||||
}
|
||||
|
||||
inline kdlib::MEMOFFSET_64 getImplicitProcessOffset()
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
@ -304,6 +319,8 @@ python::list getProcessThreads();
|
||||
python::list getTargetProcesses();
|
||||
python::list getLocalProcesses();
|
||||
|
||||
std::wstring getHostProcessPath();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
inline
|
||||
|
@ -49,6 +49,12 @@ inline void dinput(const std::wstring &str)
|
||||
kdlib::dinput(str);
|
||||
}
|
||||
|
||||
inline void setStatusMessage(const std::wstring &str)
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
kdlib::setStatusMessage(str);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class DbgOut : public kdlib::windbg::WindbgOut
|
||||
|
@ -9,6 +9,14 @@
|
||||
<Configuration>Debug_2.7</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</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">
|
||||
<Configuration>Debug_3.5</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@ -33,6 +41,22 @@
|
||||
<Configuration>Debug_3.7</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</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">
|
||||
<Configuration>Release_2.7</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@ -41,6 +65,14 @@
|
||||
<Configuration>Release_2.7</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</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">
|
||||
<Configuration>Release_3.5</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
@ -65,6 +97,22 @@
|
||||
<Configuration>Release_3.7</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</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>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{C4C45791-0201-4406-BC5C-A384B01E3BF5}</ProjectGuid>
|
||||
@ -108,6 +156,30 @@
|
||||
<PythonVersion>3.7</PythonVersion>
|
||||
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
|
||||
</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">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
@ -140,6 +212,30 @@
|
||||
<PythonVersion>3.7</PythonVersion>
|
||||
<LLVM_USE_CRT_DEBUG>MDd</LLVM_USE_CRT_DEBUG>
|
||||
</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">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@ -176,6 +272,33 @@
|
||||
<PythonVersion>3.7</PythonVersion>
|
||||
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
|
||||
</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">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
@ -212,7 +335,33 @@
|
||||
<PythonVersion>3.7</PythonVersion>
|
||||
<LLVM_USE_CRT_RELEASE>MT</LLVM_USE_CRT_RELEASE>
|
||||
</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" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@ -228,6 +377,15 @@
|
||||
<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" />
|
||||
</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">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
@ -240,6 +398,15 @@
|
||||
<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" />
|
||||
</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">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
@ -252,6 +419,15 @@
|
||||
<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" />
|
||||
</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">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
@ -264,6 +440,15 @@
|
||||
<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" />
|
||||
</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">
|
||||
<NuGetPackageImportStamp>bb9fbdf7</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
@ -299,6 +484,30 @@
|
||||
<IntDir>$(Platform)\$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
|
||||
</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'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetExt>.pyd</TargetExt>
|
||||
@ -331,6 +540,30 @@
|
||||
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(Platform)\$(Configuration)\</IntDir>
|
||||
</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'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetExt>.pyd</TargetExt>
|
||||
@ -359,6 +592,27 @@
|
||||
<IntDir>$(Platform)\$(Configuration)\</IntDir>
|
||||
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
|
||||
</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'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetExt>.pyd</TargetExt>
|
||||
@ -387,6 +641,27 @@
|
||||
<OutDir>$(SolutionDir)out\$(Platform)\$(Configuration)\</OutDir>
|
||||
<IntDir>$(Platform)\$(Configuration)\</IntDir>
|
||||
</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'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -476,6 +751,72 @@
|
||||
</Command>
|
||||
</CustomBuildStep>
|
||||
</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'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
@ -564,6 +905,72 @@
|
||||
</Command>
|
||||
</CustomBuildStep>
|
||||
</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'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
@ -584,7 +991,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|Win32'">
|
||||
@ -607,7 +1014,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|Win32'">
|
||||
@ -630,7 +1037,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'">
|
||||
@ -652,6 +1059,75 @@
|
||||
<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.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>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
@ -676,7 +1152,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|x64'">
|
||||
@ -699,7 +1175,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|x64'">
|
||||
@ -722,7 +1198,7 @@
|
||||
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
<Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'">
|
||||
@ -744,6 +1220,75 @@
|
||||
<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.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>
|
||||
<Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir)</Command>
|
||||
</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\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\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>
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<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\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\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>
|
||||
</Project>
|
@ -2,7 +2,7 @@
|
||||
#define PYKD_VERSION_MAJOR 0
|
||||
#define PYKD_VERSION_MINOR 3
|
||||
#define PYKD_VERSION_SUBVERSION 4
|
||||
#define PYKD_VERSION_BUILDNO 7
|
||||
#define PYKD_VERSION_BUILDNO 15
|
||||
|
||||
#define __VER_STR2__(x) #x
|
||||
#define __VER_STR1__(x) __VER_STR2__(x)
|
||||
|
@ -266,8 +266,32 @@ inline kdlib::MemoryProtect getVaProtect( kdlib::MEMOFFSET_64 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
|
||||
|
||||
|
3169
pykd/pymod.cpp
3169
pykd/pymod.cpp
File diff suppressed because it is too large
Load Diff
@ -91,7 +91,16 @@ struct ModuleAdapter : public kdlib::Module
|
||||
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)
|
||||
@ -113,7 +122,7 @@ struct ModuleAdapter : public kdlib::Module
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
||||
@ -113,15 +113,18 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar )
|
||||
|
||||
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;
|
||||
|
||||
if (!typedVar.getType()->isStaticMember(i) )
|
||||
offset = typedVar.getElementOffset(i);
|
||||
if (typedVar->getType()->isConstMember(i))
|
||||
continue;
|
||||
|
||||
kdlib::TypedVarPtr val = typedVar.getElement(i);
|
||||
if (!typedVar->getType()->isStaticMember(i) )
|
||||
offset = typedVar->getElementOffset(i);
|
||||
|
||||
kdlib::TypedVarPtr val = typedVar->getElement(i);
|
||||
|
||||
lst.push_back( FieldTuple( name, offset, val ) );
|
||||
}
|
||||
@ -136,6 +139,44 @@ python::list TypedVarAdapter::getFields( kdlib::TypedVar& typedVar )
|
||||
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)
|
||||
@ -213,7 +254,19 @@ kdlib::TypedVarPtr TypedVarAdapter::getFieldAttr(kdlib::TypedVar& typedVar, cons
|
||||
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());
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -187,7 +187,9 @@ struct TypedVarAdapter {
|
||||
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 )
|
||||
{
|
||||
|
@ -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;
|
||||
|
||||
@ -85,10 +85,10 @@ python::list TypeInfoAdapter::getFields( kdlib::TypeInfo &typeInfo )
|
||||
|
||||
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);
|
||||
kdlib::TypeInfoPtr val = typeInfo.getElement(i);
|
||||
std::wstring name = typeInfo->getElementName(i);
|
||||
kdlib::TypeInfoPtr val = typeInfo->getElement(i);
|
||||
|
||||
lst.push_back( FieldTuple( name, val ) );
|
||||
}
|
||||
@ -103,6 +103,35 @@ python::list TypeInfoAdapter::getFields( kdlib::TypeInfo &typeInfo )
|
||||
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)
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
@ -211,6 +240,29 @@ python::list TypeInfoAdapter::getBaseClasses(kdlib::TypeInfo &typeInfo)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
python::list TypeInfoAdapter::getTemplateArgs(const kdlib::TypeInfoPtr &typeInfo)
|
||||
{
|
||||
std::list<std::wstring> templateArgs;
|
||||
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
|
||||
for (size_t i = 0; i < typeInfo->getTemplateArgsCount(); ++i)
|
||||
{
|
||||
templateArgs.push_back(typeInfo->getTemplateArg(i));
|
||||
}
|
||||
}
|
||||
|
||||
python::list pylst;
|
||||
|
||||
for (const auto& arg : templateArgs)
|
||||
pylst.append(arg);
|
||||
|
||||
return pylst;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
kdlib::TypeInfoPtr TypeInfoAdapter::getElementAttr(kdlib::TypeInfo &typeInfo, const std::wstring &name)
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
@ -221,7 +273,19 @@ kdlib::TypeInfoPtr TypeInfoAdapter::getElementAttr(kdlib::TypeInfo &typeInfo, co
|
||||
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());
|
||||
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -69,6 +69,12 @@ inline kdlib::TypeInfoProviderPtr getTypeInfoProviderFromSource(const std::wstri
|
||||
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)
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
@ -143,6 +149,30 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
|
||||
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 )
|
||||
{
|
||||
@ -302,6 +332,12 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
|
||||
return typeInfo.isNoType();
|
||||
}
|
||||
|
||||
static bool isTemplate(const kdlib::TypeInfoPtr &typeInfo)
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
return typeInfo->isTemplate();
|
||||
}
|
||||
|
||||
static void appendField( kdlib::TypeInfo &typeInfo, const std::wstring &fieldName, kdlib::TypeInfoPtr &fieldType )
|
||||
{
|
||||
AutoRestorePyState pystate;
|
||||
@ -326,7 +362,9 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
|
||||
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);
|
||||
|
||||
@ -334,10 +372,16 @@ struct TypeInfoAdapter : public kdlib::TypeInfo {
|
||||
|
||||
static python::list getBaseClasses(kdlib::TypeInfo &typeInfo);
|
||||
|
||||
static python::list getTemplateArgs(const kdlib::TypeInfoPtr &typeInfo);
|
||||
|
||||
static bool isZero(kdlib::TypeInfo &typeInfo) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool isNotZero(kdlib::TypeInfo &typeInfo) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool hasFieldOrMethod(kdlib::TypeInfoPtr& typedVar, const std::wstring& name);
|
||||
|
||||
};
|
||||
@ -398,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 {
|
||||
static kdlib::TypeInfoPtr getUInt1B() { return pykd::getTypeInfoByName(L"UInt1B"); }
|
||||
static kdlib::TypeInfoPtr getUInt2B() { return pykd::getTypeInfoByName(L"UInt2B"); }
|
||||
|
@ -12,6 +12,8 @@ namespace python = boost::python;
|
||||
#include "dbgexcept.h"
|
||||
#include "pydbgio.h"
|
||||
|
||||
#include <python.h>
|
||||
|
||||
using namespace kdlib::windbg;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -228,16 +230,16 @@ KDLIB_EXT_COMMAND_METHOD_IMPL(PykdExt, py)
|
||||
{
|
||||
PyInterpreterState *interpreter = localState->interp;
|
||||
|
||||
while( interpreter->tstate_head != NULL )
|
||||
{
|
||||
PyThreadState *threadState = (PyThreadState*)(interpreter->tstate_head);
|
||||
//while( interpreter->tstate_head != NULL )
|
||||
//{
|
||||
// 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);
|
||||
|
||||
|
@ -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=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
|
149
setup/setup.py
149
setup/setup.py
@ -5,10 +5,11 @@ import os
|
||||
import shutil
|
||||
import zipfile
|
||||
import sys
|
||||
import itertools
|
||||
|
||||
_name = "pykd"
|
||||
_desc = "python windbg extension"
|
||||
_version = '0.3.4.2'
|
||||
_version = '0.3.4.15'
|
||||
|
||||
def getReleaseSrc():
|
||||
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:
|
||||
|
||||
#make package catalog
|
||||
#make package catalog
|
||||
|
||||
if "--plat-name=win32" in sys.argv:
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
1118
snippets/nbl.py
1118
snippets/nbl.py
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@ import sys
|
||||
|
||||
|
||||
def usage():
|
||||
print "python pytowiki.py module_name output_file"
|
||||
print("python pytowiki.py module_name output_file")
|
||||
|
||||
|
||||
class CodeplexFormatter:
|
||||
@ -99,7 +99,7 @@ def buildDoc( ioStream, formatter, apiInfo ):
|
||||
for func in apiInfo.funcs:
|
||||
ioStream.write( formatter.bulletItem( formatter.link( func.__name__, func.__name__ ) ) )
|
||||
|
||||
ioStream.write( formatter.endl() )
|
||||
ioStream.write( formatter.endl() )
|
||||
|
||||
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.endl() )
|
||||
|
||||
methods = filter( lambda m: m.__doc__ != None, cls.methods )
|
||||
methods = list(filter( lambda m: m.__doc__ != None, cls.methods ) )
|
||||
|
||||
if methods:
|
||||
ioStream.write( formatter.header4( "Methods:") )
|
||||
@ -174,7 +174,7 @@ def main():
|
||||
|
||||
module = __import__( moduleName )
|
||||
|
||||
with file( fileName, "w" ) as wikiIo:
|
||||
with open( fileName, "w" ) as wikiIo:
|
||||
|
||||
apiInfo = ModuleInfo( module )
|
||||
|
||||
@ -185,7 +185,7 @@ def main():
|
||||
|
||||
except ImportWarning:
|
||||
|
||||
print "failed to import module " + moduleName
|
||||
print("failed to import module ", moduleName)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -182,6 +182,12 @@ class MemoryTest( unittest.TestCase ):
|
||||
self.assertTrue( pykd.isValid( target.module.begin() ) )
|
||||
self.assertFalse( pykd.isValid( 0 ) )
|
||||
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 ):
|
||||
lst = pykd.loadPtrList( target.module.g_listHead )
|
||||
|
@ -66,6 +66,9 @@ def getTestSuite( singleName = "" ):
|
||||
|
||||
unittest.TestLoader().loadTestsFromTestCase( breakpoint.BreakpointTest ),
|
||||
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( targetprocess.ProcessTest ),
|
||||
unittest.TestLoader().loadTestsFromTestCase( ehloadtest.EhLoadTest ),
|
||||
|
@ -8,18 +8,18 @@
|
||||
<StartupFile>pykdtest.py</StartupFile>
|
||||
<SearchPath>
|
||||
</SearchPath>
|
||||
<WorkingDirectory>..\..\out\x64\Debug_2.7</WorkingDirectory>
|
||||
<WorkingDirectory>C:\Users\User\Documents\projects\pykd2017\out\x64\Debug_3.7</WorkingDirectory>
|
||||
<OutputPath>.</OutputPath>
|
||||
<Name>pykdtest</Name>
|
||||
<RootNamespace>pykdtest</RootNamespace>
|
||||
<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 />
|
||||
<InterpreterArguments>
|
||||
</InterpreterArguments>
|
||||
<EnableNativeCodeDebugging>True</EnableNativeCodeDebugging>
|
||||
<IsWindowsApplication>False</IsWindowsApplication>
|
||||
<InterpreterId>Global|PythonCore|2.7</InterpreterId>
|
||||
<InterpreterId>Global|PythonCore|3.7</InterpreterId>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -63,6 +63,8 @@
|
||||
<InterpreterReference Include="Global|PythonCore|2.7-32" />
|
||||
<InterpreterReference Include="Global|PythonCore|2.7" />
|
||||
<InterpreterReference Include="Global|PythonCore|3.6" />
|
||||
<InterpreterReference Include="Global|PythonCore|3.7" />
|
||||
<InterpreterReference Include="Global|PythonCore|3.7-32" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets" />
|
||||
|
@ -103,4 +103,36 @@ class InlineStackTest(unittest.TestCase):
|
||||
|
||||
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))
|
||||
|
@ -21,6 +21,14 @@ class TypedVarTest( unittest.TestCase ):
|
||||
tv = pykd.typedVar( "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):
|
||||
self.assertEqual( 10, target.module.typedVar( "ucharVar" ) )
|
||||
self.assertEqual( 1020, target.module.typedVar( "ushortVar" ) )
|
||||
@ -87,7 +95,7 @@ class TypedVarTest( unittest.TestCase ):
|
||||
self.assertEqual( True, tv1.m_field2 )
|
||||
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
|
||||
|
||||
def testPtrField(self):
|
||||
@ -295,8 +303,8 @@ class TypedVarTest( unittest.TestCase ):
|
||||
def testUdtSubscribe(self):
|
||||
tv = pykd.typedVar( "g_virtChild" )
|
||||
self.assertEqual( 6, len(tv) )
|
||||
fieldName = tv.fieldName(5)
|
||||
fieldVal = tv.field(5)
|
||||
fieldName = tv.fieldName(3)
|
||||
fieldVal = tv.field(3)
|
||||
|
||||
self.assertEqual( fieldName, "m_baseField" )
|
||||
self.assertEqual( fieldVal, tv.m_baseField )
|
||||
@ -439,7 +447,7 @@ class TypedVarTest( unittest.TestCase ):
|
||||
var = target.module.typedVar("structTest", [0x55] * 20 )
|
||||
setattr(var, "m_field1", 11)
|
||||
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):
|
||||
var = target.module.typedVar("structTest", [0x55] * 20 )
|
||||
|
@ -42,7 +42,7 @@ class TypeInfoTest( unittest.TestCase ):
|
||||
self.assertTrue( "UInt4B", ti1.m_field0.name() )
|
||||
self.assertTrue( "m_field0" in ti1 )
|
||||
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 ):
|
||||
@ -242,16 +242,12 @@ class TypeInfoTest( unittest.TestCase ):
|
||||
ti = pykd.typeInfo("UInt8B").arrayOf(10)
|
||||
self.assertTrue( "UInt8B[10]", ti.name() )
|
||||
|
||||
def testCompareWihNone(self):
|
||||
def testCompareWithNone(self):
|
||||
ti = pykd.typeInfo("UInt8B")
|
||||
if ti == None:
|
||||
pass
|
||||
if ti != None:
|
||||
pass
|
||||
if not ti:
|
||||
pass
|
||||
if ti:
|
||||
pass
|
||||
self.assertFalse(ti == None)
|
||||
self.assertTrue(ti != None)
|
||||
self.assertFalse(not ti)
|
||||
self.assertTrue(ti)
|
||||
|
||||
def testFunction(self):
|
||||
functype = target.module.typedVar( "CdeclFuncPtr" ).type().deref()
|
||||
@ -354,7 +350,7 @@ class TypeInfoTest( unittest.TestCase ):
|
||||
typeProvider = pykd.getTypeInfoProviderFromPdb(pdb)
|
||||
self.assertEqual("structTest", typeProvider.getTypeByName("structTest").name())
|
||||
self.assertEqual("structTest", typeProvider.structTest.name())
|
||||
self.assertEqual(13, len(list(typeProvider.typeIterator("*struct*"))))
|
||||
self.assertEqual(15, len(list(typeProvider.typeIterator("*struct*"))))
|
||||
|
||||
def testScopeName(self):
|
||||
self.assertEqual( target.module.name(), pykd.typeInfo( "structTest" ).scopeName() )
|
||||
@ -365,3 +361,32 @@ class TypeInfoTest( unittest.TestCase ):
|
||||
self.assertTrue("m_field1" in ti)
|
||||
self.assertFalse("NotExist" in ti)
|
||||
self.assertRaises(Exception, lambda t : 2 in t, ti)
|
||||
|
||||
def testTemplateType(self):
|
||||
ti = target.module.type("g_testTemplateTwoTypes")
|
||||
self.assertTrue(ti.isTemplate)
|
||||
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() )
|
Loading…
Reference in New Issue
Block a user