本文整理汇总了Golang中github.com/derekparker/delve/service/api.EvalScope类的典型用法代码示例。如果您正苦于以下问题:Golang EvalScope类的具体用法?Golang EvalScope怎么用?Golang EvalScope使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了EvalScope类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: scopePrefix
func scopePrefix(client service.Client, cmdname string, pargs ...string) error {
fullargs := make([]string, 0, len(pargs)+1)
fullargs = append(fullargs, cmdname)
fullargs = append(fullargs, pargs...)
scope := api.EvalScope{-1, 0}
lastcmd := ""
callFilterSortAndOutput := func(fn scopedFilteringFunc, fnargs []string) error {
outfn := filterSortAndOutput(func(client service.Client, filter string) ([]string, error) {
return fn(client, scope, filter)
})
return outfn(client, fnargs...)
}
for i := 0; i < len(fullargs); i++ {
lastcmd = fullargs[i]
switch fullargs[i] {
case "goroutine":
if i+1 >= len(fullargs) {
return fmt.Errorf("goroutine command needs an argument")
}
n, err := strconv.Atoi(fullargs[i+1])
if err != nil {
return fmt.Errorf("invalid argument to goroutine, expected integer")
}
scope.GoroutineID = int(n)
i++
case "frame":
if i+1 >= len(fullargs) {
return fmt.Errorf("frame command needs an argument")
}
n, err := strconv.Atoi(fullargs[i+1])
if err != nil {
return fmt.Errorf("invalid argument to frame, expected integer")
}
scope.Frame = int(n)
i++
case "locals":
return callFilterSortAndOutput(locals, fullargs[i+1:])
case "args":
return callFilterSortAndOutput(args, fullargs[i+1:])
case "print", "p":
return printVar(client, scope, fullargs[i+1:]...)
default:
return fmt.Errorf("unknown command %s", fullargs[i])
}
}
return fmt.Errorf("no command passed to %s", lastcmd)
}
示例2: scopePrefix
func scopePrefix(client service.Client, cmdname string, pargs ...string) error {
fullargs := make([]string, 0, len(pargs)+1)
fullargs = append(fullargs, cmdname)
fullargs = append(fullargs, pargs...)
scope := api.EvalScope{-1, 0}
lastcmd := ""
callFilterSortAndOutput := func(fn scopedFilteringFunc, fnargs []string) error {
outfn := filterSortAndOutput(func(client service.Client, filter string) ([]string, error) {
return fn(client, scope, filter)
})
return outfn(client, fnargs...)
}
for i := 0; i < len(fullargs); i++ {
lastcmd = fullargs[i]
switch fullargs[i] {
case "goroutine":
if i+1 >= len(fullargs) {
return fmt.Errorf("goroutine command needs an argument")
}
n, err := strconv.Atoi(fullargs[i+1])
if err != nil {
return fmt.Errorf("invalid argument to goroutine, expected integer")
}
scope.GoroutineID = int(n)
i++
case "frame":
if i+1 >= len(fullargs) {
return fmt.Errorf("frame command needs an argument")
}
n, err := strconv.Atoi(fullargs[i+1])
if err != nil {
return fmt.Errorf("invalid argument to frame, expected integer")
}
scope.Frame = int(n)
i++
case "list", "ls":
frame, gid := scope.Frame, scope.GoroutineID
locs, err := client.Stacktrace(gid, frame, false)
if err != nil {
return err
}
if frame >= len(locs) {
return fmt.Errorf("Frame %d does not exist in goroutine %d", frame, gid)
}
loc := locs[frame]
return printfile(loc.File, loc.Line, true)
case "stack", "bt":
depth, full, err := parseStackArgs(fullargs[i+1:])
if err != nil {
return err
}
stack, err := client.Stacktrace(scope.GoroutineID, depth, full)
if err != nil {
return err
}
printStack(stack, "")
return nil
case "locals":
return callFilterSortAndOutput(locals, fullargs[i+1:])
case "args":
return callFilterSortAndOutput(args, fullargs[i+1:])
case "print", "p":
return printVar(client, scope, fullargs[i+1:]...)
default:
return fmt.Errorf("unknown command %s", fullargs[i])
}
}
return fmt.Errorf("no command passed to %s", lastcmd)
}
示例3: scopePrefix
func scopePrefix(t *Term, cmdstr string) error {
scope := api.EvalScope{GoroutineID: -1, Frame: 0}
lastcmd := ""
rest := cmdstr
nexttok := func() string {
v := strings.SplitN(rest, " ", 2)
if len(v) > 1 {
rest = v[1]
} else {
rest = ""
}
return v[0]
}
callFilterSortAndOutput := func(fn scopedFilteringFunc, fnargs string) error {
outfn := filterSortAndOutput(func(t *Term, filter string) ([]string, error) {
return fn(t, scope, filter)
})
return outfn(t, fnargs)
}
for {
cmd := nexttok()
if cmd == "" && rest == "" {
break
}
switch cmd {
case "goroutine":
if rest == "" {
return fmt.Errorf("goroutine command needs an argument")
}
n, err := strconv.Atoi(nexttok())
if err != nil {
return fmt.Errorf("invalid argument to goroutine, expected integer")
}
scope.GoroutineID = int(n)
case "frame":
if rest == "" {
return fmt.Errorf("frame command needs an argument")
}
n, err := strconv.Atoi(nexttok())
if err != nil {
return fmt.Errorf("invalid argument to frame, expected integer")
}
scope.Frame = int(n)
case "list", "ls":
frame, gid := scope.Frame, scope.GoroutineID
locs, err := t.client.Stacktrace(gid, frame, false)
if err != nil {
return err
}
if frame >= len(locs) {
return fmt.Errorf("Frame %d does not exist in goroutine %d", frame, gid)
}
loc := locs[frame]
return printfile(t, loc.File, loc.Line, true)
case "stack", "bt":
depth, full, err := parseStackArgs(rest)
if err != nil {
return err
}
stack, err := t.client.Stacktrace(scope.GoroutineID, depth, full)
if err != nil {
return err
}
printStack(stack, "")
return nil
case "locals":
return callFilterSortAndOutput(locals, rest)
case "args":
return callFilterSortAndOutput(args, rest)
case "print", "p":
return printVar(t, scope, rest)
case "set":
return setVar(t, scope, rest)
default:
return fmt.Errorf("unknown command %s", cmd)
}
lastcmd = cmd
}
return fmt.Errorf("no command passed to %s", lastcmd)
}