Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface { // Returns the pid of the process we are debugging. ProcessPid() int // Detach detaches the debugger, optionally killing the process. Detach(killProcess bool) error // Restarts program. Restart() error // GetState returns the current debugger state. GetState() (*api.DebuggerState, error) // Continue resumes process execution. Continue() <-chan *api.DebuggerState // Next continues to the next source line, not entering function calls. Next() (*api.DebuggerState, error) // Step continues to the next source line, entering function calls. Step() (*api.DebuggerState, error) // SingleStep will step a single cpu instruction. StepInstruction() (*api.DebuggerState, error) // SwitchThread switches the current thread context. SwitchThread(threadID int) (*api.DebuggerState, error) // SwitchGoroutine switches the current goroutine (and the current thread as well) SwitchGoroutine(goroutineID int) (*api.DebuggerState, error) // Halt suspends the process. Halt() (*api.DebuggerState, error) // GetBreakpoint gets a breakpoint by ID. GetBreakpoint(id int) (*api.Breakpoint, error) // CreateBreakpoint creates a new breakpoint. CreateBreakpoint(*api.Breakpoint) (*api.Breakpoint, error) // ListBreakpoints gets all breakpoints. ListBreakpoints() ([]*api.Breakpoint, error) // ClearBreakpoint deletes a breakpoint by ID. ClearBreakpoint(id int) (*api.Breakpoint, error) // ListThreads lists all threads. ListThreads() ([]*api.Thread, error) // GetThread gets a thread by its ID. GetThread(id int) (*api.Thread, error) // ListPackageVariables lists all package variables in the context of the current thread. ListPackageVariables(filter string) ([]api.Variable, error) // EvalVariable returns a variable in the context of the current thread. EvalVariable(scope api.EvalScope, symbol string) (*api.Variable, error) // ListPackageVariablesFor lists all package variables in the context of a thread. ListPackageVariablesFor(threadID int, filter string) ([]api.Variable, error) // SetVariable sets the value of a variable SetVariable(scope api.EvalScope, symbol, value string) error // ListSources lists all source files in the process matching filter. ListSources(filter string) ([]string, error) // ListFunctions lists all functions in the process matching filter. ListFunctions(filter string) ([]string, error) // ListLocals lists all local variables in scope. ListLocalVariables(scope api.EvalScope) ([]api.Variable, error) // ListFunctionArgs lists all arguments to the current function. ListFunctionArgs(scope api.EvalScope) ([]api.Variable, error) // ListRegisters lists registers and their values. ListRegisters() (string, error) // ListGoroutines lists all goroutines. ListGoroutines() ([]*api.Goroutine, error) // Returns stacktrace Stacktrace(int, int, bool) ([]api.Stackframe, error) // Returns whether we attached to a running process or not AttachedToExistingProcess() bool // Returns concrete location information described by a location expression // loc ::= <filename>:<line> | <function>[:<line>] | /<regex>/ | (+|-)<offset> | <line> | *<address> // * <filename> can be the full path of a file or just a suffix // * <function> ::= <package>.<receiver type>.<name> | <package>.(*<receiver type>).<name> | <receiver type>.<name> | <package>.<name> | (*<receiver type>).<name> | <name> // * <function> must be unambiguous // * /<regex>/ will return a location for each function matched by regex // * +<offset> returns a location for the line that is <offset> lines after the current line // * -<offset> returns a location for the line that is <offset> lines before the current line // * <line> returns a location for a line in the current file // * *<address> returns the location corresponding to the specified address // NOTE: this function does not actually set breakpoints. FindLocation(scope api.EvalScope, loc string) ([]api.Location, error) }
Client represents a debugger service client. All client methods are synchronous.
type Config ¶
type Config struct { // Listener is used to serve requests. Listener net.Listener // ProcessArgs are the arguments to launch a new process. ProcessArgs []string // AttachPid is the PID of an existing process to which the debugger should // attach. AttachPid int }
Config provides the configuration to start a Debugger and expose it with a service.
Only one of ProcessArgs or AttachPid should be specified. If ProcessArgs is provided, a new process will be launched. Otherwise, the debugger will try to attach to an existing process with AttachPid.
Click to show internal directories.
Click to hide internal directories.