006_go debug利器之gdb

众所周知gdb是c/c++下比较常用的debug工具,同样它也可以用于golang的调试.

一、

(1)Golang 官方文档对gdb使用的文档

https://golang.org/doc/gdb?spm=a2c4e.11153940.blogcont199077.8.121f50d5c4E09w

(2)使用

这里-N -l的标记是忽略编译器优化的意思,这样我们就可以更容易的调试程序。

go build -gcflags "-N -l" main.go   #生成二进制文件
gdb main #进入调试

(3)下面详细解释它的用法

[root@arun /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver]# ls
demo.go  main  main.go
[root@arun /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver]# gdb main.go
"/data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main.go": not in executable format: File format not recognized
(gdb) file main      #Use FILE as program to be debugged.指定要debug的文件
Reading symbols from /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main...done.
Loading Go Runtime support.

(gdb) b 243           #在243行处打断点
Breakpoint 1 at 0x4a558f: file /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main.go, line 243.

(gdb) run               #Start debugged program.开始debug程序
Starting program: /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main

Breakpoint 1, main.main () at /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main.go:243
243		mergedata,err := MergeData("10751")


(gdb) where            #打印当前所在的位置
#0  main.main () at /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main.go:243



(gdb) p err              #Print value of expression EXP.打印这个表达式
$1 = {tab = 0x10, data = 0x4c3120}

(gdb) info files         #Names of targets and files being debugged.查看当前正处于debug状态的文件,help info可以看到很多的info子命令


(gdb) s                    #进入函数内部调试    
main.MergeData (pid="10751", ~r1=map[string]float64, ~r2=...) at /data/zookeeper/zookeeper-3.4.9/bin/jvmobserver/main.go:140
140	func MergeData(pid string) (map[string]float64, error) {

(gdb) help finish       #执行,直到选定的frame执行结束,然后打印返回值,将其放入历史值中,停止
Execute until selected stack frame returns.
Usage: finish
Upon return, the value returned is printed and put in the value history.
   

 二、调试带有启动参数的程序

gdb jvmmonitor
(gdb) set args -C ../conf/conf.yaml

 

 

利用coredump进行线上环境复原参考:https://www.cnblogs.com/chengliangsheng/p/3597010.html

进一步探索: https://blog.csdn.net/huwh_/article/details/77140752

posted @ 2019-03-05 16:04  arun_python  阅读(215)  评论(0)    收藏  举报