GoLang語言,學了很久,一直覺得它單步調試有較多問題,最近才知道自已對它了解得太少了。
原來GO語言對GDB的版本是至少為gdb7以上,才能比較好的打印任意變量,如果低於這個版本,則才會出一些問題。
網上說GDB版本為7.1,本人使用GDB7.8版本測試,確實很不錯。以下是記錄單步調試使用的幾個打印變量。
info frame,打印當前棧參數。
info locals打印局部變量
info args打印參數。
bt顯示當前堆棧
x/3xw &r查看內存
刪除調試符號:go build -ldflags “-s -w” filename.go
-s: 去掉符號信息。
-w: 去掉DWARF調試信息。
關閉內聯優化:go build -gcflags “-N -l” filename.go
—————–
在centos6.6里利用原生的GDB調試時,發現如下特點。
1.直接使用list命令,會進入到一個如下狀態。(gdb) l
/usr/local/go/src/runtime/rt0_linux_amd64.s: No such file or directory.
in /usr/local/go/src/runtime/rt0_linux_amd64.s
2.可以使用l main.main命令定位到主函數。(gdb) l main.main
warning: Source file is more recent than executable.
4
5 type point struct {
6 x, y int
7 }
8
9 func main() {
10 i:=32
11 p := point{1, 2}
12 f := 3.3434
13 txt := "sdfsdfdsfsfds"
http://www.kxtry.com/archives/737
