diff --git a/pykd/pykd_vc120.vcxproj b/pykd/pykd_vc120.vcxproj index 796fbc6..c94a038 100644 --- a/pykd/pykd_vc120.vcxproj +++ b/pykd/pykd_vc120.vcxproj @@ -182,6 +182,7 @@ <ClInclude Include="pykdver.h" /> <ClInclude Include="pymemaccess.h" /> <ClInclude Include="pymodule.h" /> + <ClInclude Include="pyprocess.h" /> <ClInclude Include="pysymengine.h" /> <ClInclude Include="pythreadstate.h" /> <ClInclude Include="pytypedvar.h" /> diff --git a/pykd/pykd_vc120.vcxproj.filters b/pykd/pykd_vc120.vcxproj.filters index f3b0c40..682f2ca 100644 --- a/pykd/pykd_vc120.vcxproj.filters +++ b/pykd/pykd_vc120.vcxproj.filters @@ -75,6 +75,9 @@ <ClInclude Include="pyevents.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="pyprocess.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <ClCompile Include="stdafx.cpp"> diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index f7b527d..343331c 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -519,7 +519,11 @@ BOOST_PYTHON_MODULE( pykd ) "Return thread by its index" ) .def("currentThread", TargetProcessAdapter::getCurrentThread, "Return current thread" ) - ; + .def("getNumberBreakpoints", TargetProcessAdapter::getNumberBreakpoints, + "Return number of breakpoints for this process" ) + .def("breakpoint", TargetProcessAdapter::getBreakpointByIndex, + "Return a breakpoint by it's index" ) + ; python::class_<kdlib::TargetThread, kdlib::TargetThreadPtr, boost::noncopyable>("targetThread", "Class representing process in the target system", python::no_init ) .add_property("systemID", TargetThreadAdapter::getSystemId, @@ -528,6 +532,8 @@ BOOST_PYTHON_MODULE( pykd ) "Return TEB address" ) .def("setCurrent", TargetThreadAdapter::setCurrent, "Set this thread current") + .def("isCurrent", TargetThreadAdapter::isCurrent, + "Check if this thread is current") ; python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumBehavior>, boost::noncopyable>("module", "Class representing executable module", python::no_init ) diff --git a/pykd/pyprocess.h b/pykd/pyprocess.h index 2ed4239..8d8c3c7 100644 --- a/pykd/pyprocess.h +++ b/pykd/pyprocess.h @@ -61,6 +61,18 @@ struct TargetProcessAdapter { AutoRestorePyState pystate; return process.getCurrentThread(); } + + static unsigned long getNumberBreakpoints(kdlib::TargetProcess& process) + { + AutoRestorePyState pystate; + return process.getNumberBreakpoints(); + } + + static kdlib::BreakpointPtr getBreakpointByIndex(kdlib::TargetProcess& process, unsigned long index) + { + AutoRestorePyState pystate; + return process.getBreakpoint(index); + } }; @@ -83,6 +95,12 @@ struct TargetThreadAdapter { AutoRestorePyState pystate; return thread.setCurrent(); } + + static bool isCurrent(kdlib::TargetThread& thread) + { + AutoRestorePyState pystate; + return thread.isCurrent(); + } }; } // pykd namespace