go-delve/delve · error
too many arguments to restart
Error message
too many arguments to restart
What it means
When restarting a recorded (RR) target, 'restart' accepts at most one positional argument: the checkpoint ID to restart from. restartRecorded returns this error when more than one positional argument is supplied. Extra arguments beyond the checkpoint ID are not meaningful for a recorded restart.
Source
Thrown at pkg/terminal/command.go:1215
rerecord := false
resetArgs := false
newArgv := []string{}
newRedirects := [3]string{}
restartPos := ""
if len(v) > 0 {
if v[0] == "-r" {
rerecord = true
if len(v) == 2 {
var err error
resetArgs, newArgv, newRedirects, err = parseNewArgv(v[1])
if err != nil {
return err
}
}
} else {
if len(v) > 1 {
return errors.New("too many arguments to restart")
}
restartPos = v[0]
}
}
if err := restartIntl(t, rerecord, restartPos, resetArgs, newArgv, newRedirects); err != nil {
return err
}
state, err := t.client.GetState()
if err != nil {
return err
}
printcontext(t, state)
printPos(t, state.CurrentThread, printPosShowArrow)
t.onStop()
return nil
}View on GitHub (pinned to a23773e6c3)
Solutions
- Pass at most one checkpoint ID: 'restart <checkpoint-id>'
- Use 'checkpoints' to list valid checkpoint IDs
- To change program arguments use the new argv syntax (e.g. 'restart -noargs <args...>') rather than positional extras
Example fix
// before restart c1 verbose // after restart c1
Defensive patterns
Strategy: validation
Validate before calling
if len(positionalArgs) > 1 {
return errors.New("restart accepts at most one checkpoint ID")
} Try / catch
if err := restart(...); strings.Contains(err.Error(), "too many arguments to restart") { /* drop extras and retry with single checkpoint id */ } Prevention
- Only pass a single checkpoint ID to recorded restart
- Use -noargs/new-argv syntax for program arguments, not positional extras
- Check 'help restart' before scripting
When it happens
Trigger: Running 'restart c1 c2' or 'restart somearg extra' while debugging under rr recording: restart parses flags, then the else-branch sees len(v) > 1 positional args and returns the error (pkg/terminal/command.go:1215).
Common situations: Passing both a checkpoint ID and program arguments (program arguments require -noargs / new argv syntax instead); scripting restart with extra tokens; confusing recorded-mode restart with live-mode restart argument handling.
Related errors
- argument of deferred must be a number greater than 0 (use 's
- Invalid next count
- missing filename after -save flag
- address required
- too many arguments to trace
AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31).
Data as JSON: /api/errors/67ec702af3866a1c.
Report an issue: GitHub.