本文整理汇总了Golang中github.com/derekparker/delve/service.Client.Stacktrace方法的典型用法代码示例。如果您正苦于以下问题:Golang Client.Stacktrace方法的具体用法?Golang Client.Stacktrace怎么用?Golang Client.Stacktrace使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/derekparker/delve/service.Client
的用法示例。
在下文中一共展示了Client.Stacktrace方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: stackCommand
func stackCommand(client service.Client, args ...string) error {
var err error
goroutineid := -1
depth := 10
switch len(args) {
case 0:
// nothing to do
case 2:
goroutineid, err = strconv.Atoi(args[1])
if err != nil {
return fmt.Errorf("Wrong argument: expected integer")
}
fallthrough
case 1:
depth, err = strconv.Atoi(args[0])
if err != nil {
return fmt.Errorf("Wrong argument: expected integer")
}
default:
return fmt.Errorf("Wrong number of arguments to stack")
}
stack, err := client.Stacktrace(goroutineid, depth)
if err != nil {
return err
}
printStack(stack, "")
return nil
}
示例2: stackCommand
func stackCommand(client service.Client, args ...string) error {
var (
err error
goroutineid = -1
)
depth, full, err := parseStackArgs(args)
if err != nil {
return err
}
stack, err := client.Stacktrace(goroutineid, depth, full)
if err != nil {
return err
}
printStack(stack, "")
return nil
}
示例3: stackCommand
func stackCommand(client service.Client, args ...string) error {
var err error
goroutineid := -1
depth := 10
switch len(args) {
case 0:
// nothing to do
case 2:
goroutineid, err = strconv.Atoi(args[1])
if err != nil {
return fmt.Errorf("Wrong argument: expected integer")
}
fallthrough
case 1:
depth, err = strconv.Atoi(args[0])
if err != nil {
return fmt.Errorf("Wrong argument: expected integer")
}
default:
return fmt.Errorf("Wrong number of arguments to stack")
}
stack, err := client.Stacktrace(goroutineid, depth)
if err != nil {
return err
}
for i := range stack {
name := "(nil)"
if stack[i].Function != nil {
name = stack[i].Function.Name
}
fmt.Printf("%d. %s\n\t%s:%d (%#v)\n", i, name, stack[i].File, stack[i].Line, stack[i].PC)
}
return nil
}
示例4: 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)
}