package main
import (
"fmt"
"math/rand"
"time"
)
func computeE(r int32) float64 {
e := 2.0
factorial := 1.0
for i := int32(2); i < r; i++ {
factorial *= float64(i)
e += 1 / factorial
}
return e
}
func main() {
for {
r := rand.Int31() % 10000
e := computeE(r)
fmt.Println(r, e)
time.Sleep(time.Second)
}
}
$ go tool objdump -s main.computeE app
$ objdump --sym app
$ go tool compile -S main.go
$ objdump -d app
$ dlv exec ./app
(dlv) break main.go:13
(dlv) break main.computeE
(dlv) goroutines -tf
(dlv) goroutine ${id}
(dlv) frame ${level}
(dlv) regs -a
(dlv) disassemble -l main.go:13
$ strace -p $PID
$ gstack -p $PID
$ pstack -p $PID
References: