[0.1.x] removed : createDbgClient function ( no more multiple debugging targets due fatal error #10999 )

git-svn-id: https://pykd.svn.codeplex.com/svn@78150 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\kernelnet_cp 2012-07-18 09:16:22 +00:00 committed by Mikhail I. Izmestev
parent 592c241a1d
commit 8cf2e95695

View File

@ -147,204 +147,204 @@ BOOST_PYTHON_MODULE( pykd )
python::implicitly_convertible<intBase,ULONG>(); python::implicitly_convertible<intBase,ULONG>();
python::implicitly_convertible<intBase,LONG>(); python::implicitly_convertible<intBase,LONG>();
python::class_<DebugClient, DebugClientPtr>("dbgClient", "Class representing a debugging session", python::no_init ) //python::class_<DebugClient, DebugClientPtr>("dbgClient", "Class representing a debugging session", python::no_init )
.def( "addr64", &DebugClient::addr64, // .def( "addr64", &DebugClient::addr64,
"Extend address to 64 bits formats" ) // "Extend address to 64 bits formats" )
.def( "breakin", &DebugClient::breakin, // .def( "breakin", &DebugClient::breakin,
"Break into debugger" ) // "Break into debugger" )
.def( "compareMemory", &DebugClient::compareMemory, DebugClient_compareMemory( python::args( "offset1", "offset2", "length", "phyAddr" ), // .def( "compareMemory", &DebugClient::compareMemory, DebugClient_compareMemory( python::args( "offset1", "offset2", "length", "phyAddr" ),
"Compare two memory buffers by virtual or physical addresses" ) ) // "Compare two memory buffers by virtual or physical addresses" ) )
.def( "loadDump", &DebugClient::loadDump, // .def( "loadDump", &DebugClient::loadDump,
"Load crash dump" ) // "Load crash dump" )
.def( "startProcess", &DebugClient::startProcess, // .def( "startProcess", &DebugClient::startProcess,
"Start process for debugging" ) // "Start process for debugging" )
.def( "attachProcess", &DebugClient::attachProcess, // .def( "attachProcess", &DebugClient::attachProcess,
"Attach debugger to a exsisting process" ) // "Attach debugger to a exsisting process" )
.def( "attachKernel", &DebugClient::attachKernel, // .def( "attachKernel", &DebugClient::attachKernel,
"Attach debugger to a target's kernel" ) // "Attach debugger to a target's kernel" )
.def( "detachProcess", &DebugClient::detachProcess, // .def( "detachProcess", &DebugClient::detachProcess,
"Detach debugger from the current process" ) // "Detach debugger from the current process" )
.def( "expr", &DebugClient::evaluate, // .def( "expr", &DebugClient::evaluate,
"Evaluate windbg expression" ) // "Evaluate windbg expression" )
.def( "findSymbol", &DebugClient::findSymbol, // .def( "findSymbol", &DebugClient::findSymbol,
"Find symbol by the target virtual memory offset" ) // "Find symbol by the target virtual memory offset" )
.def( "getCurrentProcess", &DebugClient::getCurrentProcess, // .def( "getCurrentProcess", &DebugClient::getCurrentProcess,
"Return pointer to current process's block" ) // "Return pointer to current process's block" )
.def( "getCurrentStack", &DebugClient::getCurrentStack, // .def( "getCurrentStack", &DebugClient::getCurrentStack,
"Return a current stack as a list of stackFrame objects" ) // "Return a current stack as a list of stackFrame objects" )
.def( "getDebuggeeType", &DebugClient::getDebuggeeType, // .def( "getDebuggeeType", &DebugClient::getDebuggeeType,
"Return type of the debuggee" ) // "Return type of the debuggee" )
.def( "getImplicitThread", &DebugClient::getImplicitThread, // .def( "getImplicitThread", &DebugClient::getImplicitThread,
"Return implicit thread for current process" ) // "Return implicit thread for current process" )
.def( "getExecutionStatus", &DebugClient::getExecutionStatus, // .def( "getExecutionStatus", &DebugClient::getExecutionStatus,
"Return information about the execution status of the debugger" ) // "Return information about the execution status of the debugger" )
.def( "getOffset", &DebugClient::getOffset, // .def( "getOffset", &DebugClient::getOffset,
"Return traget virtual address for specified symbol" ) // "Return traget virtual address for specified symbol" )
.def( "getPdbFile", &DebugClient::getPdbFile, // .def( "getPdbFile", &DebugClient::getPdbFile,
"Return full path to PDB (Program DataBase, debug information) file" ) // "Return full path to PDB (Program DataBase, debug information) file" )
.def( "getProcessorMode", &DebugClient::getProcessorMode, // .def( "getProcessorMode", &DebugClient::getProcessorMode,
"Return current processor mode as string: X86, ARM, IA64 or X64" ) // "Return current processor mode as string: X86, ARM, IA64 or X64" )
.def( "getProcessorType", &DebugClient::getProcessorType, // .def( "getProcessorType", &DebugClient::getProcessorType,
"Return type of physical processor: X86, ARM, IA64 or X64" ) // "Return type of physical processor: X86, ARM, IA64 or X64" )
.def( "getSourceLine", &DebugClient::getSourceLine, DebugClient_getSourceLine( python::args( "offset"), // .def( "getSourceLine", &DebugClient::getSourceLine, DebugClient_getSourceLine( python::args( "offset"),
"Return source file name, lin and displacement by the specified offset" ) ) // "Return source file name, lin and displacement by the specified offset" ) )
.def( "getThreadList", &DebugClient::getThreadList, // .def( "getThreadList", &DebugClient::getThreadList,
"Return list of threads (each item is numeric identifier of thread)" ) // "Return list of threads (each item is numeric identifier of thread)" )
.def( "go", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_GO>, // .def( "go", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_GO>,
"Change debugger status to DEBUG_STATUS_GO" ) // "Change debugger status to DEBUG_STATUS_GO" )
.def( "is64bitSystem", &DebugClient::is64bitSystem, // .def( "is64bitSystem", &DebugClient::is64bitSystem,
"Check if target system has 64 address space" ) // "Check if target system has 64 address space" )
.def( "isDumpAnalyzing", &DebugClient::isDumpAnalyzing, // .def( "isDumpAnalyzing", &DebugClient::isDumpAnalyzing,
"Check if it is a dump analyzing ( not living debuggee )" ) // "Check if it is a dump analyzing ( not living debuggee )" )
.def( "isKernelDebugging", &DebugClient::isKernelDebugging, // .def( "isKernelDebugging", &DebugClient::isKernelDebugging,
"Check if kernel dubugging is running" ) // "Check if kernel dubugging is running" )
.def( "isValid", &DebugClient::isVaValid, // .def( "isValid", &DebugClient::isVaValid,
"Check if the virtual address is valid" ) // "Check if the virtual address is valid" )
.def( "killProcess", &DebugClient::terminateProcess, // .def( "killProcess", &DebugClient::terminateProcess,
"Stop debugging and terminate current process" ) // "Stop debugging and terminate current process" )
.def( "loadBytes", &DebugClient::loadBytes, DebugClient_loadBytes( python::args( "offset", "count", "phyAddr" ), // .def( "loadBytes", &DebugClient::loadBytes, DebugClient_loadBytes( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of unsigned bytes" ) ) // "Read the block of the target's memory and return it as list of unsigned bytes" ) )
.def( "loadWords", &DebugClient::loadWords, DebugClient_loadWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadWords", &DebugClient::loadWords, DebugClient_loadWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of unsigned shorts" ) ) // "Read the block of the target's memory and return it as list of unsigned shorts" ) )
.def( "loadDWords", &DebugClient::loadDWords, DebugClient_loadDWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadDWords", &DebugClient::loadDWords, DebugClient_loadDWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of unsigned long ( double word )" ) ) // "Read the block of the target's memory and return it as list of unsigned long ( double word )" ) )
.def( "loadQWords", &DebugClient::loadQWords, DebugClient_loadQWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadQWords", &DebugClient::loadQWords, DebugClient_loadQWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of unsigned long long ( quad word )" ) ) // "Read the block of the target's memory and return it as list of unsigned long long ( quad word )" ) )
.def( "loadSignBytes", &DebugClient::loadSignBytes, DebugClient_loadSignBytes( python::args( "offset", "count", "phyAddr" ), // .def( "loadSignBytes", &DebugClient::loadSignBytes, DebugClient_loadSignBytes( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of signed bytes" ) ) // "Read the block of the target's memory and return it as list of signed bytes" ) )
.def( "loadSignWords", &DebugClient::loadSignWords, DebugClient_loadSignWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadSignWords", &DebugClient::loadSignWords, DebugClient_loadSignWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of signed shorts" ) ) // "Read the block of the target's memory and return it as list of signed shorts" ) )
.def( "loadSignDWords", &DebugClient::loadSignDWords, DebugClient_loadSignDWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadSignDWords", &DebugClient::loadSignDWords, DebugClient_loadSignDWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of signed longs" ) ) // "Read the block of the target's memory and return it as list of signed longs" ) )
.def( "loadSignQWords", &DebugClient::loadSignQWords, DebugClient_loadSignQWords( python::args( "offset", "count", "phyAddr" ), // .def( "loadSignQWords", &DebugClient::loadSignQWords, DebugClient_loadSignQWords( python::args( "offset", "count", "phyAddr" ),
"Read the block of the target's memory and return it as list of signed long longs" ) ) // "Read the block of the target's memory and return it as list of signed long longs" ) )
.def( "loadChars", &DebugClient::loadChars, DebugClient_loadChars( python::args( "offset", "count", "phyAddr" ), // .def( "loadChars", &DebugClient::loadChars, DebugClient_loadChars( python::args( "offset", "count", "phyAddr" ),
"Load string from target memory" ) ) // "Load string from target memory" ) )
.def( "loadWChars", &DebugClient::loadWChars, DebugClient_loadWChars( python::args( "offset", "count", "phyAddr" ), // .def( "loadWChars", &DebugClient::loadWChars, DebugClient_loadWChars( python::args( "offset", "count", "phyAddr" ),
"Load string from target memory" ) ) // "Load string from target memory" ) )
.def( "loadCStr", &DebugClient::loadCStr, // .def( "loadCStr", &DebugClient::loadCStr,
"Load string from the target buffer containing 0-terminated ansi-string" ) // "Load string from the target buffer containing 0-terminated ansi-string" )
.def( "loadWStr", &DebugClient::loadWStr, // .def( "loadWStr", &DebugClient::loadWStr,
"Load string from the target buffer containing 0-terminated unicode-string" ) // "Load string from the target buffer containing 0-terminated unicode-string" )
.def( "loadUnicodeString", &DebugClient::loadUnicodeStr, // .def( "loadUnicodeString", &DebugClient::loadUnicodeStr,
"Return string represention of windows UNICODE_STRING type" ) // "Return string represention of windows UNICODE_STRING type" )
.def( "loadAnsiString", &DebugClient::loadAnsiStr, // .def( "loadAnsiString", &DebugClient::loadAnsiStr,
"Return string represention of windows ANSI_STRING type" ) // "Return string represention of windows ANSI_STRING type" )
.def( "loadPtrList", &DebugClient::loadPtrList, // .def( "loadPtrList", &DebugClient::loadPtrList,
"Return list of pointers, each points to next" ) // "Return list of pointers, each points to next" )
.def( "loadPtrs", &DebugClient::loadPtrArray, // .def( "loadPtrs", &DebugClient::loadPtrArray,
"Read the block of the target's memory and return it as a list of pointers" ) // "Read the block of the target's memory and return it as a list of pointers" )
.def( "ptrByte", &DebugClient::ptrByte, // .def( "ptrByte", &DebugClient::ptrByte,
"Read an unsigned 1-byte integer from the target memory" ) // "Read an unsigned 1-byte integer from the target memory" )
.def( "ptrWord", &DebugClient::ptrWord, // .def( "ptrWord", &DebugClient::ptrWord,
"Read an unsigned 2-byte integer from the target memory" ) // "Read an unsigned 2-byte integer from the target memory" )
.def( "ptrDWord", &DebugClient::ptrDWord, // .def( "ptrDWord", &DebugClient::ptrDWord,
"Read an unsigned 4-byte integer from the target memory" ) // "Read an unsigned 4-byte integer from the target memory" )
.def( "ptrQWord", &DebugClient::ptrQWord, // .def( "ptrQWord", &DebugClient::ptrQWord,
"Read an unsigned 8-byte integer from the target memory" ) // "Read an unsigned 8-byte integer from the target memory" )
.def( "ptrMWord", &DebugClient::ptrMWord, // .def( "ptrMWord", &DebugClient::ptrMWord,
"Read an unsigned mashine's word wide integer from the target memory" ) // "Read an unsigned mashine's word wide integer from the target memory" )
.def( "ptrSignByte", &DebugClient::ptrSignByte, // .def( "ptrSignByte", &DebugClient::ptrSignByte,
"Read an signed 1-byte integer from the target memory" ) // "Read an signed 1-byte integer from the target memory" )
.def( "ptrSignWord", &DebugClient::ptrSignWord, // .def( "ptrSignWord", &DebugClient::ptrSignWord,
"Read an signed 2-byte integer from the target memory" ) // "Read an signed 2-byte integer from the target memory" )
.def( "ptrSignDWord", &DebugClient::ptrSignDWord, // .def( "ptrSignDWord", &DebugClient::ptrSignDWord,
"Read an signed 4-byte integer from the target memory" ) // "Read an signed 4-byte integer from the target memory" )
.def( "ptrSignQWord", &DebugClient::ptrSignQWord, // .def( "ptrSignQWord", &DebugClient::ptrSignQWord,
"Read an signed 8-byte integer from the target memory" ) // "Read an signed 8-byte integer from the target memory" )
.def( "ptrSignMWord", &DebugClient::ptrSignMWord, // .def( "ptrSignMWord", &DebugClient::ptrSignMWord,
"Read an signed mashine's word wide integer from the target memory" ) // "Read an signed mashine's word wide integer from the target memory" )
.def( "ptrPtr", &DebugClient::ptrPtr, // .def( "ptrPtr", &DebugClient::ptrPtr,
"Read an pointer value from the target memory" ) // "Read an pointer value from the target memory" )
.def("typedVar",&DebugClient::getTypedVarByName, // .def("typedVar",&DebugClient::getTypedVarByName,
"Return a typedVar class instance" ) // "Return a typedVar class instance" )
.def("typedVar",&DebugClient::getTypedVarByTypeInfo, // .def("typedVar",&DebugClient::getTypedVarByTypeInfo,
"Return a typedVar class instance" ) // "Return a typedVar class instance" )
.def("typedVar",&DebugClient::getTypedVarByTypeName, // .def("typedVar",&DebugClient::getTypedVarByTypeName,
"Return a typedVar class instance" ) // "Return a typedVar class instance" )
.def( "loadExt", &pykd::DebugClient::loadExtension, // .def( "loadExt", &pykd::DebugClient::loadExtension,
"Load a debuger extension" ) // "Load a debuger extension" )
.def( "loadModule", &pykd::DebugClient::loadModuleByName, // .def( "loadModule", &pykd::DebugClient::loadModuleByName,
"Return instance of Module class" ) // "Return instance of Module class" )
.def( "loadModule", &pykd::DebugClient::loadModuleByOffset, // .def( "loadModule", &pykd::DebugClient::loadModuleByOffset,
"Return instance of the Module class which posseses specified address" ) // "Return instance of the Module class which posseses specified address" )
.def( "dbgCommand", &pykd::DebugClient::dbgCommand, // .def( "dbgCommand", &pykd::DebugClient::dbgCommand,
"Run a debugger's command and return it's result as a string" ) // "Run a debugger's command and return it's result as a string" )
.def( "dprint", &pykd::DebugClient::dprint, // .def( "dprint", &pykd::DebugClient::dprint,
"Print out string. If dml = True string is printed with dml highlighting ( only for windbg )" ) // "Print out string. If dml = True string is printed with dml highlighting ( only for windbg )" )
.def( "dprintln", &pykd::DebugClient::dprintln, // .def( "dprintln", &pykd::DebugClient::dprintln,
"Print out string and insert end of line symbol. If dml = True string is printed with dml highlighting ( only for windbg )" ) // "Print out string and insert end of line symbol. If dml = True string is printed with dml highlighting ( only for windbg )" )
.def( "ptrSize", &DebugClient::ptrSize, // .def( "ptrSize", &DebugClient::ptrSize,
"Return effective pointer size" ) // "Return effective pointer size" )
.def ( "rdmsr", &DebugClient::loadMSR, // .def ( "rdmsr", &DebugClient::loadMSR,
"Return MSR value" ) // "Return MSR value" )
.def( "reg", &DebugClient::getRegByName, // .def( "reg", &DebugClient::getRegByName,
"Return a CPU regsiter value by the register's name" ) // "Return a CPU regsiter value by the register's name" )
.def( "reg", &DebugClient::getRegByIndex, // .def( "reg", &DebugClient::getRegByIndex,
"Return a CPU regsiter value by the register's value" ) // "Return a CPU regsiter value by the register's value" )
.def( "setCurrentProcess", &DebugClient::setCurrentProcess, // .def( "setCurrentProcess", &DebugClient::setCurrentProcess,
"Set current process by address" ) // "Set current process by address" )
.def( "setExecutionStatus", &DebugClient::setExecutionStatus, // .def( "setExecutionStatus", &DebugClient::setExecutionStatus,
"Requests that the debugger engine enter an executable state" ) // "Requests that the debugger engine enter an executable state" )
.def( "setImplicitThread", &DebugClient::setImplicitThread, // .def( "setImplicitThread", &DebugClient::setImplicitThread,
"Set implicit thread for current process" ) // "Set implicit thread for current process" )
.def( "setProcessorMode", &DebugClient::setProcessorMode, // .def( "setProcessorMode", &DebugClient::setProcessorMode,
"Set current processor mode by string (X86, ARM, IA64 or X64)" ) // "Set current processor mode by string (X86, ARM, IA64 or X64)" )
.def( "sizeof", &DebugClient::getSymbolSize, // .def( "sizeof", &DebugClient::getSymbolSize,
"Return a size of the type or variable" ) // "Return a size of the type or variable" )
.def( "step", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_STEP_OVER>, // .def( "step", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_STEP_OVER>,
"Change debugger status to DEBUG_STATUS_STEP_OVER" ) // "Change debugger status to DEBUG_STATUS_STEP_OVER" )
.def( "symbolsPath", &DebugClient::dbgSymPath, // .def( "symbolsPath", &DebugClient::dbgSymPath,
"Return symbol path" ) // "Return symbol path" )
.def( "trace", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_STEP_INTO>, // .def( "trace", &DebugClient::changeDebuggerStatus<DEBUG_STATUS_STEP_INTO>,
"Change debugger status to DEBUG_STATUS_STEP_INTO" ) // "Change debugger status to DEBUG_STATUS_STEP_INTO" )
.def("typedVarList", &DebugClient::getTypedVarListByTypeName, // .def("typedVarList", &DebugClient::getTypedVarListByTypeName,
"Return a list of the typedVar class instances. Each item represents an item of the linked list in the target memory" ) // "Return a list of the typedVar class instances. Each item represents an item of the linked list in the target memory" )
.def("typedVarList", &DebugClient::getTypedVarListByType, // .def("typedVarList", &DebugClient::getTypedVarListByType,
"Return a list of the typedVar class instances. Each item represents an item of the linked list in the target memory" ) // "Return a list of the typedVar class instances. Each item represents an item of the linked list in the target memory" )
.def("typedVarArray", &DebugClient::getTypedVarArrayByTypeName, // .def("typedVarArray", &DebugClient::getTypedVarArrayByTypeName,
"Return a list of the typedVar class instances. Each item represents an item of the counted array in the target memory" ) // "Return a list of the typedVar class instances. Each item represents an item of the counted array in the target memory" )
.def("typedVarArray", &DebugClient::getTypedVarArrayByType, // .def("typedVarArray", &DebugClient::getTypedVarArrayByType,
"Return a list of the typedVar class instances. Each item represents an item of the counted array in the target memory" ) // "Return a list of the typedVar class instances. Each item represents an item of the counted array in the target memory" )
.def("containingRecord", &DebugClient::containingRecordByName, // .def("containingRecord", &DebugClient::containingRecordByName,
"Return instance of the typedVar class. It's value are loaded from the target memory." // "Return instance of the typedVar class. It's value are loaded from the target memory."
"The start address is calculated by the same method as the standard macro CONTAINING_RECORD does" ) // "The start address is calculated by the same method as the standard macro CONTAINING_RECORD does" )
.def("containingRecord", &DebugClient::containingRecordByType, // .def("containingRecord", &DebugClient::containingRecordByType,
"Return instance of the typedVar class. It's value are loaded from the target memory." // "Return instance of the typedVar class. It's value are loaded from the target memory."
"The start address is calculated by the same method as the standard macro CONTAINING_RECORD does" ) // "The start address is calculated by the same method as the standard macro CONTAINING_RECORD does" )
.def( "waitForEvent", &DebugClient::waitForEvent, // .def( "waitForEvent", &DebugClient::waitForEvent,
"Wait for events that breaks into the debugger" ) // "Wait for events that breaks into the debugger" )
.def( "wrmsr", &DebugClient::setMSR, // .def( "wrmsr", &DebugClient::setMSR,
"Set MSR value" ) // "Set MSR value" )
.def( "getNumberProcessors", &DebugClient::getNumberProcessors, // .def( "getNumberProcessors", &DebugClient::getNumberProcessors,
"Get the number of actual processors in the machine" ) // "Get the number of actual processors in the machine" )
.def( "getPageSize", &DebugClient::getPageSize, // .def( "getPageSize", &DebugClient::getPageSize,
"Get the page size for the currently executing processor context" ) // "Get the page size for the currently executing processor context" )
.def( "getContext", &DebugClient::getThreadContext, // .def( "getContext", &DebugClient::getThreadContext,
"Get context of current thread (register values)" ) // "Get context of current thread (register values)" )
.def( "getWow64Context", &DebugClient::getThreadWow64Context, // .def( "getWow64Context", &DebugClient::getThreadWow64Context,
"Get WOW64-context of current thread (register values)\n" // "Get WOW64-context of current thread (register values)\n"
"!wow64exts.r analog") // "!wow64exts.r analog")
.def( "getLocals", &DebugClient::getLocals, DebugClient_getLocals( python::args( "ctx" ), // .def( "getLocals", &DebugClient::getLocals, DebugClient_getLocals( python::args( "ctx" ),
"Get list of local variables" ) ) // "Get list of local variables" ) )
.def( "setBp", &DebugClient::setSoftwareBp, DebugClient_setSoftwareBp( python::args( "offset", "callback" ), // .def( "setBp", &DebugClient::setSoftwareBp, DebugClient_setSoftwareBp( python::args( "offset", "callback" ),
"Set software breakpoint on executiont" ) ) // "Set software breakpoint on executiont" ) )
.def( "setBp", &DebugClient::setHardwareBp, DebugClient_setHardwareBp( python::args( "offset", "size", "accsessType", "callback" ), // .def( "setBp", &DebugClient::setHardwareBp, DebugClient_setHardwareBp( python::args( "offset", "size", "accsessType", "callback" ),
"Set hardware breakpoint" ) ) // "Set hardware breakpoint" ) )
.def( "getAllBp", &DebugClient::getAllBp, // .def( "getAllBp", &DebugClient::getAllBp,
"Get all breapoint IDs" ) // "Get all breapoint IDs" )
.def( "removeBp", &DebugClient::removeBp, // .def( "removeBp", &DebugClient::removeBp,
"Remove breapoint by IDs" ) // "Remove breapoint by IDs" )
.def( "removeBp", &DebugClient::removeAllBp, // .def( "removeBp", &DebugClient::removeAllBp,
"Remove all breapoints" ) // "Remove all breapoints" )
.def( "addSynSymbol", &DebugClient::addSyntheticSymbol, // .def( "addSynSymbol", &DebugClient::addSyntheticSymbol,
"Add new synthetic symbol for virtual address" ) // "Add new synthetic symbol for virtual address" )
.def( "delAllSynSymbols", &DebugClient::delAllSyntheticSymbols, // .def( "delAllSynSymbols", &DebugClient::delAllSyntheticSymbols,
"Delete all synthetic symbol for all modules") // "Delete all synthetic symbol for all modules")
.def( "delSynSymbol", &DebugClient::delSyntheticSymbol, // .def( "delSynSymbol", &DebugClient::delSyntheticSymbol,
"Delete synthetic symbols by virtual address" ) // "Delete synthetic symbols by virtual address" )
.def( "delSynSymbolsMask", &DebugClient::delSyntheticSymbolsMask, // .def( "delSynSymbolsMask", &DebugClient::delSyntheticSymbolsMask,
"Delete synthetic symbols by mask of module and symbol name"); // "Delete synthetic symbols by mask of module and symbol name");
python::def( "addr64", &addr64, python::def( "addr64", &addr64,
"Extend address to 64 bits formats" ); "Extend address to 64 bits formats" );
@ -352,8 +352,8 @@ BOOST_PYTHON_MODULE( pykd )
"Break into debugger" ); "Break into debugger" );
python::def( "compareMemory", &compareMemory, compareMemory_( python::args( "offset1", "offset2", "length", "phyAddr" ), python::def( "compareMemory", &compareMemory, compareMemory_( python::args( "offset1", "offset2", "length", "phyAddr" ),
"Compare two memory buffers by virtual or physical addresses" ) ); "Compare two memory buffers by virtual or physical addresses" ) );
python::def( "createDbgClient", (DebugClientPtr(*)())&DebugClient::createDbgClient, //python::def( "createDbgClient", (DebugClientPtr(*)())&DebugClient::createDbgClient,
"create a new instance of the dbgClient class" ); // "create a new instance of the dbgClient class" );
python::def( "loadDump", &loadDump, python::def( "loadDump", &loadDump,
"Load crash dump (only for console)"); "Load crash dump (only for console)");
python::def( "startProcess", &startProcess, python::def( "startProcess", &startProcess,