func (d *Debugger) state() (*api.DebuggerState, error) { if d.process.Exited() { return nil, proc.ProcessExitedError{Pid: d.ProcessPid()} } var ( state *api.DebuggerState goroutine *api.Goroutine ) if d.process.SelectedGoroutine != nil { goroutine = api.ConvertGoroutine(d.process.SelectedGoroutine) } state = &api.DebuggerState{ SelectedGoroutine: goroutine, Exited: d.process.Exited(), } for i := range d.process.Threads { th := api.ConvertThread(d.process.Threads[i]) state.Threads = append(state.Threads, th) if i == d.process.CurrentThread.ID { state.CurrentThread = th } } for _, bp := range d.process.Breakpoints { if bp.Temp { state.NextInProgress = true break } } return state, nil }