| // Copyright 2017 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "time" |
| ) |
| |
| func main() { |
| growstack() // Use stack early to prevent growth during test, which confuses gdb |
| test() |
| } |
| |
| //go:noinline |
| func id(x int) int { |
| return x |
| } |
| |
| func test() { |
| x := id(0) |
| y := id(0) |
| fmt.Println(x) |
| for i := x; i < 3; i++ { |
| x := i * i |
| y += id(x) //gdb-dbg=(x,y)//gdb-opt=(x,y) |
| } |
| y = x + y //gdb-dbg=(x,y)//gdb-opt=(x,y) |
| fmt.Println(x, y) |
| |
| for x := 0; x <= 1; x++ { // From delve scopetest.go |
| a := y |
| f1(a) |
| { |
| b := 0 |
| f2(b) |
| if gretbool() { |
| c := 0 |
| f3(c) |
| } else { |
| c := 1.1 |
| f4(int(c)) |
| } |
| f5(b) |
| } |
| f6(a) |
| } |
| |
| { // From delve testnextprog.go |
| var ( |
| j = id(1) |
| f = id(2) |
| ) |
| for i := 0; i <= 5; i++ { |
| j += j * (j ^ 3) / 100 |
| if i == f { |
| fmt.Println("foo") |
| break |
| } |
| sleepytime() |
| } |
| helloworld() |
| } |
| } |
| |
| func sleepytime() { |
| time.Sleep(5 * time.Millisecond) |
| } |
| |
| func helloworld() { |
| fmt.Println("Hello, World!") |
| } |
| |
| //go:noinline |
| func f1(x int) {} |
| |
| //go:noinline |
| func f2(x int) {} |
| |
| //go:noinline |
| func f3(x int) {} |
| |
| //go:noinline |
| func f4(x int) {} |
| |
| //go:noinline |
| func f5(x int) {} |
| |
| //go:noinline |
| func f6(x int) {} |
| |
| var boolvar = true |
| |
| func gretbool() bool { |
| x := boolvar |
| boolvar = !boolvar |
| return x |
| } |
| |
| var sink string |
| |
| //go:noinline |
| func growstack() { |
| sink = fmt.Sprintf("%#v,%#v,%#v", 1, true, "cat") |
| } |