func (d *Debugger) collectBreakpointInformation(state *api.DebuggerState) error { if state == nil || state.Breakpoint == nil { return nil } bp := state.Breakpoint bpi := &api.BreakpointInfo{} state.BreakpointInfo = bpi if bp.Goroutine { g, err := d.process.CurrentThread.GetG() if err != nil { return err } bpi.Goroutine = api.ConvertGoroutine(g) } if bp.Stacktrace > 0 { rawlocs, err := d.process.CurrentThread.Stacktrace(bp.Stacktrace) if err != nil { return err } bpi.Stacktrace, err = d.convertStacktrace(rawlocs, false) if err != nil { return err } } s, err := d.process.CurrentThread.Scope() if err != nil { return err } if len(bp.Variables) > 0 { bpi.Variables = make([]api.Variable, len(bp.Variables)) } for i := range bp.Variables { v, err := s.EvalVariable(bp.Variables[i]) if err != nil { return err } bpi.Variables[i] = api.ConvertVar(v) } vars, err := functionArguments(s) if err == nil { bpi.Arguments = vars } return nil }