2012-05-21 63 views
4

在这个程序中,如何使用调试器中止执行并打印i的值?转:使用gdb打印变量

package main 

import "fmt" 

func main() { 
     x := "abc" 
     i := 3 
     fmt.Println(i) 
     fmt.Println(x) 
} 

我无法打印i。不过,我可以打印X:

go build test.go 
gdb test 
[...]Reading symbols from /home/ned/test...done. 
(gdb) br 9 
(gdb) run 
(gdb) p i 
No symbol "i" in current context. 
(gdb) p x 
$1 = "abc" 
+2

这听起来像变量'我'可能已被编译器优化不存在。你尝试过调试版吗? – sblom

+0

@sblon如何进行调试构建? –

+1

@SCL运行'去建立-gcflags“-N''禁用的优化。 – axw

回答

3

这听起来像变量i可能得到由编译器优化不复存在。你尝试过调试版吗?可以使用go build -gcflags '-N'