我有一个问题,gdb不能正确打印变量。 简单程序按以下方式构建:

chmurson-osx:helloworld chmurson$ go build -gcflags '-N' start.go 

然后gdb执行了:

^{pr2}$

接下来我要做的是:

(gdb) list
1   package main
2   
3   import "fmt"
4   
5   func main() {
6       x := "abc"
7       i := 3
8       fmt.Println(i)
9       fmt.Println(x)
10  }
(gdb) b 9
Breakpoint 1 at 0x2106: file /Users/chmurson/Dev/goprojects/misc/src/helloworld/start.go, line 9.
(gdb) run
Starting program: /Users/chmurson/Dev/goprojects/misc/src/helloworld/start 
3
[New Thread 0x1113 of process 14039]

Breakpoint 1, main.main () at /Users/chmurson/Dev/goprojects/misc/src/helloworld/start.go:9
9       fmt.Println(x)
(gdb) p x
Python Exception <type 'exceptions.OverflowError'> signed integer is greater than maximum: 
$1 = 
(gdb) p i
$2 = 8725692800
(gdb) 

您可以看到,在检查'p'变量时有Python异常,在显示'i'值时完全不是3。怎么了?在

这是我的版本

chmurson-osx:helloworld chmurson$ go version
go version go1.3.1 darwin/amd64

和gdb配置

(gdb) show configuration
This GDB was configured as follows:
   configure --host=x86_64-apple-darwin14.0.0 --target=x86_64-apple-darwin14.0.0
             --with-auto-load-dir=:${prefix}/share/auto-load
             --with-auto-load-safe-path=:${prefix}/share/auto-load
             --with-expat
             --with-gdb-datadir=/usr/local/share/gdb (relocatable)
             --with-jit-reader-dir=/usr/local/lib/gdb (relocatable)
             --without-libunwind-ia64
             --without-lzma
             --with-python=/System/Library/Frameworks/Python.framework/Versions/2.7
             --without-guile
             --with-separate-debug-dir=/usr/local/lib/debug (relocatable)
             --with-zlib
             --without-babeltrace

("Relocatable" means the directory can be moved with the GDB installation
tree, and GDB will still find it.)