C# Class CsDebugScript.Engine.Debuggers.DbgEngDll

Inheritance: IDebuggerEngine
Exibir arquivo Open project: southpolenator/WinDbgCs

Private Properties

Property Type Description
DbgEngDll System
GetFunctionTableAccess System.IntPtr
GetModuleBaseAddress ulong
GetModuleName string
GetStackTraceFromContext StackTrace
ReadMemory bool
ReadStackTraceFromContext StackTrace
StackWalkEx bool
SymFunctionTableAccess64AccessRoutines System.IntPtr

Public Methods

Method Description
BreakExecution ( Process process ) : void

Breaks the process that is being debugged.

ContinueExecution ( Process process ) : void

Releases the process that is being debugged.

CreateDefaultSymbolProvider ( ) : ISymbolProvider

Creates new instance of default symbol provider.

CreateDefaultSymbolProviderModule ( ) : ISymbolProviderModule

Creates new instance of default symbol provider module.

DbgEngDll ( IDebugClient client ) : System

Initializes a new instance of the DbgEngDll class.

Execute ( string command ) : void

Executes the specified command, but leaves its output visible to the user.

ExecuteAction ( System.Action action ) : void

Executes the action in redirected console output and error stream.

FindPatternInMemory ( Process process, ulong memoryStart, ulong memoryEnd, byte pattern, int patternStart, int patternEnd, uint searchAlignment = 1, bool searchWritableMemoryOnly = false ) : ulong

Finds the pattern in memory of the specified process.

GetAllProcesses ( ) : Process[]

Gets all processes currently being debugged.

GetCurrentProcess ( ) : Process

Gets the current process.

GetLastEventInfo ( ) : DebugEventInfo

Gets Lasts Event, most exception or event.

GetMemoryRegions ( Process process ) : MemoryRegion[]

Gets the all memory regions available in the specified process.

GetModuleAddress ( Process process, string moduleName ) : ulong

Gets the address of the module loaded into specified process.

GetModuleImageName ( Module module ) : string

Gets the name of the image. This is the name of the executable file, including the extension. Typically, the full path is included in user mode but not in kernel mode.

GetModuleLoadedImage ( Module module ) : string

Gets the name of the loaded image. Unless Microsoft CodeView symbols are present, this is the same as the image name.

GetModuleMappedImage ( Module module ) : string

Gets the name of the mapped image. In most cases, this is null. If the debugger is mapping an image file (for example, during minidump debugging), this is the name of the mapped image.

GetModuleName ( Module module ) : string

Gets the module name. This is usually just the file name without the extension. In a few cases, the module name differs significantly from the file name.

GetModuleSymbolFile ( Module module ) : string

Gets the name of the symbol file. The path and name of the symbol file. If no symbols have been loaded, this is the name of the executable file instead.

GetModuleTimestampAndSize ( Module module ) : ulong>.Tuple

Gets the timestamp and size of the module.

GetModuleVersion ( Module module, int &major, int &minor, int &revision, int &patch ) : void

Gets the module version.

GetProcessActualProcessorType ( Process process ) : ImageFileMachine

Gets the actual processor type of the specified process.

GetProcessCurrentThread ( Process process ) : System.Thread

Gets the current thread of the specified process.

GetProcessDumpFileName ( Process process ) : string

Gets the dump file name of the specified process.

GetProcessEffectiveProcessorType ( Process process ) : ImageFileMachine

Gets the effective processor type of the specified process.

GetProcessEnvironmentBlockAddress ( Process process ) : ulong

Gets the process environment block address of the specified process.

GetProcessExecutableName ( Process process ) : string

Gets the executable name of the specified process.

GetProcessModules ( Process process ) : Module[]

Gets all modules of the specified process.

GetProcessSystemId ( Process process ) : uint

Gets the system identifier of the specified process.

GetProcessThreads ( Process process ) : System.Thread[]

Gets all threads of the specified process.

GetProcessUpTime ( Process process ) : uint

Gets the up time of the specified process.

GetStackTraceFromContext ( Process process, ulong contextAddress, uint contextSize ) : StackTrace

Gets the stack trace from the specified context.

GetThreadContext ( System.Thread thread ) : ThreadContext

Gets the thread context of the specified thread.

GetThreadCurrentStackFrame ( System.Thread thread ) : StackFrame

Gets the current stack frame of the specified thread.

GetThreadEnvironmentBlockAddress ( System.Thread thread ) : ulong

Gets the environment block address of the specified thread.

GetThreadStackTrace ( System.Thread thread ) : StackTrace

Gets the stack trace of the specified thread.

IsMinidump ( Process process ) : bool

Determines whether the specified process is being debugged as minidump without heap.

QueryVirtual ( Process process, ulong address, ulong &baseAddress, ulong &regionSize ) : void

Finds memory range where the specified address belongs to.

ReadAnsiString ( Process process, ulong address, int length = -1 ) : string

Reads the ANSI string.

ReadInput ( ) : string

Reads the line from the debugger input.

ReadMemory ( Process process, ulong address, uint size ) : MemoryBuffer

Reads the memory from the specified process.

ReadUnicodeString ( Process process, ulong address, int length = -1 ) : string

Reads the unicode string.

SetCurrentProcess ( Process process ) : void

Sets the current process.

SetCurrentStackFrame ( StackFrame stackFrame ) : void

Sets the current stack frame.

SetCurrentThread ( System.Thread thread ) : void

Sets the current thread.

Terminate ( Process process ) : void

Terminates the process that is being debugged and ends the session.

Private Methods

Method Description
DbgEngDll ( ) : System

Static constructor.

GetFunctionTableAccess ( IntPtr hProcess, ulong AddrBase ) : IntPtr

An application-defined callback function used with the StackWalkEx function. It provides access to the run-time function table for the process.

GetModuleBaseAddress ( IntPtr hProcess, ulong Address ) : ulong

An application-defined callback function used with the StackWalkEx function. It is called when StackWalkEx needs a module base address for a given virtual address.

GetModuleName ( Module module, DebugModname modname ) : string

Gets the name of the module.

GetStackTraceFromContext ( System.Thread thread, IntPtr contextAddress, uint contextSize ) : StackTrace

Gets the stack trace from the specified context.

ReadMemory ( IntPtr hProcess, ulong lpBaseAddress, IntPtr lpBuffer, uint nSize, uint &lpNumberOfBytesRead ) : bool

An application-defined callback function used with the StackWalkEx function. It is called when StackWalk64 needs to read memory from the address space of the process.

ReadStackTraceFromContext ( System.Thread thread, IntPtr contextAddress ) : StackTrace

Reads the stack trace from context using StackWalkEx.

StackWalkEx ( ImageFileMachine MachineType, IntPtr hProcess, IntPtr hThread, STACKFRAME_EX &StackFrame, IntPtr ContextRecord, ReadProcessMemoryProc64 ReadMemoryRoutine, FunctionTableAccessProc64 FunctionTableAccessRoutine, GetModuleBaseProc64 GetModuleBaseRoutine, TranslateAddressProc64 TranslateAddress, uint Flags ) : bool
SymFunctionTableAccess64AccessRoutines ( IntPtr hProcess, ulong AddrBase, ReadProcessMemoryProc64 ReadMemoryRoutine, GetModuleBaseProc64 GetModuleBaseRoutine ) : IntPtr

Method Details

BreakExecution() public method

Breaks the process that is being debugged.
public BreakExecution ( Process process ) : void
process Process
return void

ContinueExecution() public method

Releases the process that is being debugged.
public ContinueExecution ( Process process ) : void
process Process
return void

CreateDefaultSymbolProvider() public method

Creates new instance of default symbol provider.
public CreateDefaultSymbolProvider ( ) : ISymbolProvider
return ISymbolProvider

CreateDefaultSymbolProviderModule() public method

Creates new instance of default symbol provider module.
public CreateDefaultSymbolProviderModule ( ) : ISymbolProviderModule
return ISymbolProviderModule

DbgEngDll() public method

Initializes a new instance of the DbgEngDll class.
public DbgEngDll ( IDebugClient client ) : System
client IDebugClient The debugger client interface.
return System

Execute() public method

Executes the specified command, but leaves its output visible to the user.
public Execute ( string command ) : void
command string The command.
return void

ExecuteAction() public method

Executes the action in redirected console output and error stream.
public ExecuteAction ( System.Action action ) : void
action System.Action The action.
return void

FindPatternInMemory() public method

Finds the pattern in memory of the specified process.
public FindPatternInMemory ( Process process, ulong memoryStart, ulong memoryEnd, byte pattern, int patternStart, int patternEnd, uint searchAlignment = 1, bool searchWritableMemoryOnly = false ) : ulong
process Process The process.
memoryStart ulong The memory start.
memoryEnd ulong The memory end.
pattern byte The pattern.
patternStart int The pattern start.
patternEnd int The pattern end.
searchAlignment uint The search alignment in number of bytes. For a successful match, the difference between the location of the found pattern and memoryStart must be a multiple of searchAlignment.
searchWritableMemoryOnly bool if set to true search through writable memory only.
return ulong

GetAllProcesses() public method

Gets all processes currently being debugged.
public GetAllProcesses ( ) : Process[]
return Process[]

GetCurrentProcess() public method

Gets the current process.
public GetCurrentProcess ( ) : Process
return Process

GetLastEventInfo() public method

Gets Lasts Event, most exception or event.
public GetLastEventInfo ( ) : DebugEventInfo
return DebugEventInfo

GetMemoryRegions() public method

Gets the all memory regions available in the specified process.
public GetMemoryRegions ( Process process ) : MemoryRegion[]
process Process The process.
return MemoryRegion[]

GetModuleAddress() public method

Gets the address of the module loaded into specified process.
public GetModuleAddress ( Process process, string moduleName ) : ulong
process Process The process.
moduleName string Name of the module.
return ulong

GetModuleImageName() public method

Gets the name of the image. This is the name of the executable file, including the extension. Typically, the full path is included in user mode but not in kernel mode.
public GetModuleImageName ( Module module ) : string
module Module The module.
return string

GetModuleLoadedImage() public method

Gets the name of the loaded image. Unless Microsoft CodeView symbols are present, this is the same as the image name.
public GetModuleLoadedImage ( Module module ) : string
module Module The module.
return string

GetModuleMappedImage() public method

Gets the name of the mapped image. In most cases, this is null. If the debugger is mapping an image file (for example, during minidump debugging), this is the name of the mapped image.
public GetModuleMappedImage ( Module module ) : string
module Module The module.
return string

GetModuleName() public method

Gets the module name. This is usually just the file name without the extension. In a few cases, the module name differs significantly from the file name.
public GetModuleName ( Module module ) : string
module Module The module.
return string

GetModuleSymbolFile() public method

Gets the name of the symbol file. The path and name of the symbol file. If no symbols have been loaded, this is the name of the executable file instead.
public GetModuleSymbolFile ( Module module ) : string
module Module The module.
return string

GetModuleTimestampAndSize() public method

Gets the timestamp and size of the module.
public GetModuleTimestampAndSize ( Module module ) : ulong>.Tuple
module Module The module.
return ulong>.Tuple

GetModuleVersion() public method

Gets the module version.
public GetModuleVersion ( Module module, int &major, int &minor, int &revision, int &patch ) : void
module Module The module.
major int The version major number.
minor int The version minor number.
revision int The version revision number.
patch int The version patch number.
return void

GetProcessActualProcessorType() public method

Gets the actual processor type of the specified process.
public GetProcessActualProcessorType ( Process process ) : ImageFileMachine
process Process The process.
return ImageFileMachine

GetProcessCurrentThread() public method

Gets the current thread of the specified process.
public GetProcessCurrentThread ( Process process ) : System.Thread
process Process The process.
return System.Thread

GetProcessDumpFileName() public method

Gets the dump file name of the specified process.
public GetProcessDumpFileName ( Process process ) : string
process Process The process.
return string

GetProcessEffectiveProcessorType() public method

Gets the effective processor type of the specified process.
public GetProcessEffectiveProcessorType ( Process process ) : ImageFileMachine
process Process The process.
return ImageFileMachine

GetProcessEnvironmentBlockAddress() public method

Gets the process environment block address of the specified process.
public GetProcessEnvironmentBlockAddress ( Process process ) : ulong
process Process The process.
return ulong

GetProcessExecutableName() public method

Gets the executable name of the specified process.
public GetProcessExecutableName ( Process process ) : string
process Process The process.
return string

GetProcessModules() public method

Gets all modules of the specified process.
public GetProcessModules ( Process process ) : Module[]
process Process The process.
return Module[]

GetProcessSystemId() public method

Gets the system identifier of the specified process.
public GetProcessSystemId ( Process process ) : uint
process Process The process.
return uint

GetProcessThreads() public method

Gets all threads of the specified process.
public GetProcessThreads ( Process process ) : System.Thread[]
process Process The process.
return System.Thread[]

GetProcessUpTime() public method

Gets the up time of the specified process.
public GetProcessUpTime ( Process process ) : uint
process Process The process.
return uint

GetStackTraceFromContext() public method

Gets the stack trace from the specified context.
public GetStackTraceFromContext ( Process process, ulong contextAddress, uint contextSize ) : StackTrace
process Process The process.
contextAddress ulong The context address.
contextSize uint Size of the context. If 0 is specified, context size will be automatically calculated.
return StackTrace

GetThreadContext() public method

Gets the thread context of the specified thread.
public GetThreadContext ( System.Thread thread ) : ThreadContext
thread System.Thread The thread.
return ThreadContext

GetThreadCurrentStackFrame() public method

Gets the current stack frame of the specified thread.
public GetThreadCurrentStackFrame ( System.Thread thread ) : StackFrame
thread System.Thread The thread.
return StackFrame

GetThreadEnvironmentBlockAddress() public method

Gets the environment block address of the specified thread.
public GetThreadEnvironmentBlockAddress ( System.Thread thread ) : ulong
thread System.Thread The thread.
return ulong

GetThreadStackTrace() public method

Gets the stack trace of the specified thread.
public GetThreadStackTrace ( System.Thread thread ) : StackTrace
thread System.Thread The thread.
return StackTrace

IsMinidump() public method

Determines whether the specified process is being debugged as minidump without heap.
public IsMinidump ( Process process ) : bool
process Process The process.
return bool

QueryVirtual() public method

Finds memory range where the specified address belongs to.
public QueryVirtual ( Process process, ulong address, ulong &baseAddress, ulong &regionSize ) : void
process Process The process.
address ulong The address.
baseAddress ulong The base address.
regionSize ulong Size of the region.
return void

ReadAnsiString() public method

Reads the ANSI string.
public ReadAnsiString ( Process process, ulong address, int length = -1 ) : string
process Process The process.
address ulong The address.
length int The length. If length is -1, string is null terminated
return string

ReadInput() public method

Reads the line from the debugger input.
public ReadInput ( ) : string
return string

ReadMemory() public method

Reads the memory from the specified process.
public ReadMemory ( Process process, ulong address, uint size ) : MemoryBuffer
process Process The process.
address ulong The memory address.
size uint The buffer size.
return CsDebugScript.Engine.Utility.MemoryBuffer

ReadUnicodeString() public method

Reads the unicode string.
public ReadUnicodeString ( Process process, ulong address, int length = -1 ) : string
process Process The process.
address ulong The address.
length int The length. If length is -1, string is null terminated
return string

SetCurrentProcess() public method

Sets the current process.
public SetCurrentProcess ( Process process ) : void
process Process The process.
return void

SetCurrentStackFrame() public method

Sets the current stack frame.
public SetCurrentStackFrame ( StackFrame stackFrame ) : void
stackFrame StackFrame The stack frame.
return void

SetCurrentThread() public method

Sets the current thread.
public SetCurrentThread ( System.Thread thread ) : void
thread System.Thread The thread.
return void

Terminate() public method

Terminates the process that is being debugged and ends the session.
public Terminate ( Process process ) : void
process Process
return void