2012-05-21 61 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'