mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 03:23:23 +08:00
[0.3.x] added : targetSystem.setCurrent method ( set the system as a current )
[0.3.x] added : targetProcess.setCurrent method ( set the process as a current ) [0.3.x] added : targetProcess.getModuleByOffset ( return a module object by it's offset ) [0.3.x] added : targetProcess.getModuleByName ( return a module object by it's name ) git-svn-id: https://pykd.svn.codeplex.com/svn@91021 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
8c1df769ad
commit
5a55a948e5
@ -2,7 +2,7 @@
|
|||||||
#define PYKD_VERSION_MAJOR 0
|
#define PYKD_VERSION_MAJOR 0
|
||||||
#define PYKD_VERSION_MINOR 3
|
#define PYKD_VERSION_MINOR 3
|
||||||
#define PYKD_VERSION_SUBVERSION 1
|
#define PYKD_VERSION_SUBVERSION 1
|
||||||
#define PYKD_VERSION_BUILDNO 4
|
#define PYKD_VERSION_BUILDNO 5
|
||||||
|
|
||||||
#define __VER_STR2__(x) #x
|
#define __VER_STR2__(x) #x
|
||||||
#define __VER_STR1__(x) __VER_STR2__(x)
|
#define __VER_STR1__(x) __VER_STR2__(x)
|
||||||
|
@ -605,12 +605,14 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
|
|
||||||
|
|
||||||
python::class_<kdlib::TargetSystem, kdlib::TargetSystemPtr, boost::noncopyable>("targetSystem", "Class representing target system", python::no_init)
|
python::class_<kdlib::TargetSystem, kdlib::TargetSystemPtr, boost::noncopyable>("targetSystem", "Class representing target system", python::no_init)
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetSystem::getCurrent))
|
.def("__init__", python::make_constructor(&TargetSystemAdapter::getCurrent))
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetSystem::getByIndex))
|
.def("__init__", python::make_constructor(&TargetSystemAdapter::getSystem))
|
||||||
.def("getNumber", TargetSystemAdapter::getNumberSystems,
|
.def("getNumber", TargetSystemAdapter::getNumberSystems,
|
||||||
"Return number of systems").staticmethod("getNumber")
|
"Return number of systems").staticmethod("getNumber")
|
||||||
.def("getCurrent", TargetSystemAdapter::getCurrent,
|
.def("getCurrent", TargetSystemAdapter::getCurrent,
|
||||||
"Return current target system").staticmethod("getCurrent")
|
"Return current target system").staticmethod("getCurrent")
|
||||||
|
.def("setCurrent", TargetSystemAdapter::setCurrent,
|
||||||
|
"set system as a current")
|
||||||
.def("getSystemById", TargetSystemAdapter::getSystemById,
|
.def("getSystemById", TargetSystemAdapter::getSystemById,
|
||||||
"Return target system by id").staticmethod("getSystemById")
|
"Return target system by id").staticmethod("getSystemById")
|
||||||
.add_property("desc", TargetSystemAdapter::getDescription,
|
.add_property("desc", TargetSystemAdapter::getDescription,
|
||||||
@ -641,8 +643,8 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
;
|
;
|
||||||
|
|
||||||
python::class_<kdlib::TargetProcess, kdlib::TargetProcessPtr, boost::noncopyable>("targetProcess", "Class representing process in the target system", python::no_init )
|
python::class_<kdlib::TargetProcess, kdlib::TargetProcessPtr, boost::noncopyable>("targetProcess", "Class representing process in the target system", python::no_init )
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetProcess::getByIndex))
|
.def("__init__", python::make_constructor(&TargetProcessAdapter::getProcess))
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetProcess::getCurrent))
|
.def("__init__", python::make_constructor(&TargetProcessAdapter::getCurrent))
|
||||||
.def("getNumber", TargetProcessAdapter::getNumberProcesses,
|
.def("getNumber", TargetProcessAdapter::getNumberProcesses,
|
||||||
"Return number of processes" ).staticmethod("getNumber")
|
"Return number of processes" ).staticmethod("getNumber")
|
||||||
.def("getCurrent", TargetProcessAdapter::getCurrent,
|
.def("getCurrent", TargetProcessAdapter::getCurrent,
|
||||||
@ -677,6 +679,12 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
"Return number of modules for this process" )
|
"Return number of modules for this process" )
|
||||||
.def("getModule", TargetProcessAdapter::getModuleByIndex,
|
.def("getModule", TargetProcessAdapter::getModuleByIndex,
|
||||||
"Return a module object by it's index" )
|
"Return a module object by it's index" )
|
||||||
|
.def("getModuleByOffset", TargetProcessAdapter::getModuleByOffset,
|
||||||
|
"Return a module object by it's offset" )
|
||||||
|
.def("getModuleByName", TargetProcessAdapter::getModuleByName,
|
||||||
|
"Return a module object by it's name" )
|
||||||
|
.def("setCurrent", TargetProcessAdapter::setCurrent,
|
||||||
|
"Set this process as a current")
|
||||||
.def("threads", TargetProcessAdapter::getThreadList,
|
.def("threads", TargetProcessAdapter::getThreadList,
|
||||||
"Return list of threads for the target process")
|
"Return list of threads for the target process")
|
||||||
.def("breakpoints", TargetProcessAdapter::getBreakpointsList,
|
.def("breakpoints", TargetProcessAdapter::getBreakpointsList,
|
||||||
@ -687,8 +695,8 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
;
|
;
|
||||||
|
|
||||||
python::class_<kdlib::TargetThread, kdlib::TargetThreadPtr, boost::noncopyable>("targetThread", "Class representing process in the target system", python::no_init )
|
python::class_<kdlib::TargetThread, kdlib::TargetThreadPtr, boost::noncopyable>("targetThread", "Class representing process in the target system", python::no_init )
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetThread::getByIndex))
|
.def("__init__", python::make_constructor(&TargetThreadAdapter::getThread))
|
||||||
.def("__init__", python::make_constructor(&kdlib::TargetThread::getCurrent))
|
.def("__init__", python::make_constructor(&TargetThreadAdapter::getCurrent))
|
||||||
.def("getNumber", TargetThreadAdapter::getNumberThreads,
|
.def("getNumber", TargetThreadAdapter::getNumberThreads,
|
||||||
"Return number of threads").staticmethod("getNumber")
|
"Return number of threads").staticmethod("getNumber")
|
||||||
.def("getCurrent", TargetThreadAdapter::getCurrent,
|
.def("getCurrent", TargetThreadAdapter::getCurrent,
|
||||||
|
@ -83,9 +83,19 @@ std::wstring TargetProcessAdapter::print(kdlib::TargetProcess& process)
|
|||||||
{
|
{
|
||||||
std::wstringstream sstr;
|
std::wstringstream sstr;
|
||||||
|
|
||||||
|
|
||||||
|
if ( !process.isKernelDebugging() )
|
||||||
|
{
|
||||||
sstr << "Target Process:" << std::endl;
|
sstr << "Target Process:" << std::endl;
|
||||||
sstr << "PID: " << std::hex << process.getSystemId() << std::endl;
|
sstr << "PID: " << std::hex << process.getSystemId() << std::endl;
|
||||||
sstr << "Name: " << process.getExecutableName() << std::endl;
|
sstr << "Name: " << process.getExecutableName() << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sstr << "Kernel virtual process:" << std::endl;
|
||||||
|
sstr << "Name: " << process.getExecutableName() << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return sstr.str();
|
return sstr.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,9 +123,17 @@ std::wstring TargetThreadAdapter::print(kdlib::TargetThread& thread)
|
|||||||
{
|
{
|
||||||
std::wstringstream sstr;
|
std::wstringstream sstr;
|
||||||
|
|
||||||
|
if ( !thread.isKernelDebugging() )
|
||||||
|
{
|
||||||
sstr << "Target Thread:" << std::endl;
|
sstr << "Target Thread:" << std::endl;
|
||||||
sstr << "PID: " << std::hex << thread.getProcess()->getSystemId() << std::endl;
|
sstr << "PID: " << std::hex << thread.getProcess()->getSystemId() << std::endl;
|
||||||
sstr << "TID: " << std::hex << thread.getSystemId() << std::endl;
|
sstr << "TID: " << std::hex << thread.getSystemId() << std::endl;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sstr << "Kernel virtual thread" << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return sstr.str();
|
return sstr.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,6 +33,12 @@ struct TargetSystemAdapter {
|
|||||||
return kdlib::TargetSystem::getById(id);
|
return kdlib::TargetSystem::getById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setCurrent(kdlib::TargetSystem& system)
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
system.setCurrent();
|
||||||
|
}
|
||||||
|
|
||||||
static std::wstring getDescription(kdlib::TargetSystem& system)
|
static std::wstring getDescription(kdlib::TargetSystem& system)
|
||||||
{
|
{
|
||||||
AutoRestorePyState pystate;
|
AutoRestorePyState pystate;
|
||||||
@ -131,6 +137,12 @@ struct TargetProcessAdapter {
|
|||||||
return kdlib::TargetProcess::getNumber();
|
return kdlib::TargetProcess::getNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void setCurrent(kdlib::TargetProcess& process)
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
return process.setCurrent();
|
||||||
|
}
|
||||||
|
|
||||||
static kdlib::PROCESS_ID getSystemId(kdlib::TargetProcess& process)
|
static kdlib::PROCESS_ID getSystemId(kdlib::TargetProcess& process)
|
||||||
{
|
{
|
||||||
AutoRestorePyState pystate;
|
AutoRestorePyState pystate;
|
||||||
@ -221,6 +233,18 @@ struct TargetProcessAdapter {
|
|||||||
return process.getModuleByIndex(index);
|
return process.getModuleByIndex(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static kdlib::ModulePtr getModuleByOffset(kdlib::TargetProcess& process, kdlib::MEMOFFSET_64 offset)
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
return process.getModuleByOffset(offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static kdlib::ModulePtr getModuleByName(kdlib::TargetProcess& process, const std::wstring& name)
|
||||||
|
{
|
||||||
|
AutoRestorePyState pystate;
|
||||||
|
return process.getModuleByName(name);
|
||||||
|
}
|
||||||
|
|
||||||
static python::list getThreadList(kdlib::TargetProcess& process);
|
static python::list getThreadList(kdlib::TargetProcess& process);
|
||||||
|
|
||||||
static python::list getBreakpointsList(kdlib::TargetProcess& process);
|
static python::list getBreakpointsList(kdlib::TargetProcess& process);
|
||||||
|
Loading…
Reference in New Issue
Block a user